我有大约一百万个文件,我需要修改文件名,大小和日期。
在以下命令中,是否可以通过性能方式完成任何改进以获取此信息?
find ./ -exec ls -lh {} \;
注意:我可以排除诸如“.file”,“。trash /”等文件以及任何文件夹本身(即,我只需要文件信息)。
更新
结果如下:
$ time (find . -ls)
real 0m5.947s
user 0m0.393s
sys 0m0.682s
$ time (ls -lhR)
real 0m14.208s
user 0m0.978s
sys 0m2.510s
$ time (find ./ -exec ls -lh {} \;)
way too long
答案 0 :(得分:3)
是的,相当多。更快的替代方案包括:
一次运行ls
命令的批量大于一个文件:
find . -print0 | xargs -0 ls -lh
让find
执行文件列表而不是单独的ls
命令:
find . -ls
完全跳过find
并递归ls
:
ls -lhR
答案 1 :(得分:2)
将\;
更改为+
会告诉find
将尽可能多的文件填充到命令行中,从而减少ls
的调用次数,显着提高了性能。