优化查找命令

时间:2013-01-28 21:40:15

标签: linux performance unix find

我有大约一百万个文件,我需要修改文件名,大小和日期。

在以下命令中,是否可以通过性能方式完成任何改进以获取此信息?

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

2 个答案:

答案 0 :(得分:3)

是的,相当多。更快的替代方案包括:

  • 一次运行ls命令的批量大于一个文件:

    find . -print0 | xargs -0 ls -lh
    
  • find执行文件列表而不是单独的ls命令:

    find . -ls
    
  • 完全跳过find并递归ls

    ls -lhR
    

答案 1 :(得分:2)

\;更改为+会告诉find将尽可能多的文件填充到命令行中,从而减少ls的调用次数,显着提高了性能。

相关问题