假设给定目录树的大小是合理的:比如Twisted或Python这样的开源项目,遍历和迭代该目录中所有文件/目录的绝对路径的最快方式是什么?
我想在Python中完成这项工作。os.path.walk很慢。所以我尝试了ls-lR和tree-fi。对于包含约8337个文件(包括tmp、pyc、test、.svn文件)的项目:$ time tree -fi > /dev/null
real 0m0.170s
user 0m0.044s
sys 0m0.123s
$ time ls -lR > /dev/null
real 0m0.292s
user 0m0.138s
sys 0m0.152s
$ time find . > /dev/null
real 0m0.074s
user 0m0.017s
sys 0m0.056s
$
tree似乎比ls -lR快(尽管ls -R比tree快,但它没有给出完整的路径)。find是最快的。
有人能想出一个更快和/或更好的方法吗?在Windows上,如果需要,我可以简单地发送一个32位二进制树.exe或ls.exe。
更新1:添加了find
更新2:为什么要这样做。。。我正在努力做一个聪明的cd、pushd等的替代品。。以及其他依赖于传递路径(less、more、cat、vim、tail)的命令的包装器命令。该程序偶尔会使用文件遍历来实现这一点(例如:键入“cdsrgraipatlxml”将自动转换为“cd src/pypm/grail/patches/lxml”)。如果换成这张cd花了,比如说,半秒钟的时间,我不会满意的。见http://github.com/srid/pf