假设给定的目录树大小适中:比如像Twisted或Python这样的开源项目,那么遍历和迭代该目录内所有文件/目录的绝对路径的最快方法是什么?
我希望在Python中完成此操作。os.path.walk速度较慢。因此,我尝试了ls -lR和tree -fi。对于一个包含大约8337个文件(包括tmp、pyc、test、.svn文件)的项目:
有没有人能想到更快和/或更好的方法?在 Windows 上,如果需要,我可以简单地提供一个32位的二进制文件 tree.exe 或 ls.exe。
更新1:添加了
我希望在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位的二进制文件 tree.exe 或 ls.exe。
更新1:添加了
find
更新2:为什么我要这样做?……我正在尝试制作一个聪明的替代 cd、pushd 等命令以及其他依赖于传递路径的包装命令(如 less、more、cat、vim、tail)。该程序偶尔会使用文件遍历来实现这一点(例如,输入“cd sr grai pat lxml”将自动转换为“cd src/pypm/grail/patches/lxml”)。如果这个 cd 替代品需要运行半秒钟,我将不会满意。请参见:http://github.com/srid/pf
cd
替代程序运行时间要达到半秒钟,我将无法满意。http://github.com/srid/pf - Sridhar Ratnakumartree
可以生成完整的路径:来自man tree
的解释:**-f
** —打印每个文件的完整路径前缀。
它还可以生成XML、JSON和HTML。 - undefined