1

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

在以下命令上是否可以在性能方面进行任何改进以获取此信息?

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
4

2 回答 2

2

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

于 2013-01-28T21:44:11.923 回答
2

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

  • 一次运行ls比一个文件更大的批处理命令:

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

    find . -ls
    
  • 完全跳过findls递归运行:

    ls -lhR
    
于 2013-01-28T21:43:57.700 回答