获取递归包含在目录中的文件列表的最快方法是什么?

时间:2012-09-14 10:16:58

标签: linux filesystems nfs

我有一个目录,其中包含分布在文件夹层次结构中的数百万个文件。该目录存储在大型远程NFS文件系统中。我想尽快检索这些文件的列表。

是否有可能比find . > list.txt更快?哪些因素影响速度?我正在使用python,但任何解决方案都会在快速的情况下运行。

2 个答案:

答案 0 :(得分:3)

在linux上,这对我来说是最快的。像这样使用(bash)globbing和printf:

printf "%s\n" directory/**/file
printf "%s\x00" directory/**/filename-with-special-characters | xargs -0 command

似乎比

快很多
find directory -name file

ls -1R directory | grep file

甚至,令人惊讶的是,

ls directory/**/file

这是一个本地文件系统:x86_64系统,SSD上的ext4文件系统,目录结构超过600,000个目录,其中包含多个文件。

答案 1 :(得分:0)

根据您在输出中的要求。我建议使用

ls -R | grep ":$" | sed -e 's/:$//' -e 's/^/   /' -e 's/-/|/'

获取当前目录中递归所有文件的完整路径。