在巨大的目录中查找文件 - 非常慢

use*_*575 0 shell ibm-midrange ibm-ifs

我有一个包含文件的目录.存档非常大,里面有150万个pdf文件.
该目录存储在带有OS V7R1的IBM i服务器上,并且该机器是新的且速度非常快.
这些文件的名称如下:

invoice_[custno]_[year']_[invoice_number].pdf  
invoice_081500_2013_7534435564.pdf    
Run Code Online (Sandbox Code Playgroud)

不,我尝试使用命令行使用find命令查找文件.

find  . -name 'invoice_2013_*.pdf'  -type f | ls -l > log.dat
Run Code Online (Sandbox Code Playgroud)

命令花了很长时间,所以我中止了操作而没有结果.

如果我尝试使用较小的目录,一切正常.

后来我希望有一份工作能够在过去的24小时内运行,并且我发现这些文件运行速度太慢,我可以忘记这一点.

jam*_*man 6

该调用永远不会起作用,因为ls不读取文件名stdin.

可能的解决方案是

使用该find实用程序的内置列表选项:

find . -name 'invoice_2013_*.pdf' -type f -ls > log.dat
Run Code Online (Sandbox Code Playgroud)

 

使用该find实用程序的-exec选项ls -l为每个匹配的文件执行:

find . -name 'invoice_2013_*.pdf' -type f -exec ls {} \; > log.dat
Run Code Online (Sandbox Code Playgroud)

 

将文件名传递给xargs实用程序,并ls -l使用文件名作为参数执行:

find . -name 'invoice_2013_*.pdf' -type f | xargs ls -l > log.dat
Run Code Online (Sandbox Code Playgroud)

在单个目录中搜索150万个文件对任何文件系统都是低效的.