我们正在对包含37个字段的5GB文件进行排序,并使用5个键对其进行排序.大文件由1000个文件组成,每个文件5MB.
190分钟后仍然没有完成.
我想知道是否还有其他方法可以加快排序速度.我们选择unix排序因为我们不希望它耗尽所有内存,所以任何基于内存的方法都不行.
独立排序每个文件的优点是什么,然后使用-m选项合并排序呢?
到目前为止我尝试了什么......
命令:
find . -type f -ctime -3 | tail -n 5
Run Code Online (Sandbox Code Playgroud)
结果:
./Mobilni Telefoni/01. Box Update/05. DC Unlocker Client/dc-unlocker_client-1.00.0857.exe
./Mobilni Telefoni/01. Box Update/39. Z3X Box/01. Update/01. Samsung Box/SamsungTool_12.4.exe
./Mobilni Telefoni/10. Nokia/1. SRPSKI HRVATSKI JEZICI/BB5/3xx_Series/Asha 300/06.97/rm781_06.97_ppm_d.rar
./GPS Navigacije/01. Garmin/03. Garmin Other/garmin_kgen_15.exe
./GPS Navigacije/01. Garmin/03. Garmin Other/test.txt
Run Code Online (Sandbox Code Playgroud)
这个输出没问题,如果我把时间跨度放宽,效果不好.(注意我使用-ctime而不是-mtime,因为几年前修改了一些上传的文件)
问题是文件可以每月上传一次,或者一年一次,我仍然需要获得10个最新文件,无论时间跨度如何.
如果无法完成,则tail仅限制输出,或者仅以某种方式获取指定的数字,而不会对大量文件产生巨大的性能影响.
通过在SO上使用来自一个答案的命令,我能够获取文件但是有些文件丢失了......
find . -type f -printf '%T@ %p\n' | sort -n | tail -10 | cut -f2- -d" "
Run Code Online (Sandbox Code Playgroud)
结果:
./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2330/E2330_OXFKE2.rar
./Mobilni …Run Code Online (Sandbox Code Playgroud)