2015-05-09 63 views
2

我正在尝试在单个文件夹中的〜200,000个文件上执行某些操作。在数千个文件中迭代速度更快

当我这样做:

for i in *; do /bin/echo -n "."; done 

一个点每隔几秒钟打印。具有一百个文件的文件夹上的相同操作速度非常快。

这是为什么?如何加速包含数千个文件的文件夹的过程?

+0

创建一个线程过程中做,在时间 –

+0

瓶颈可能是你的文件系统,而不是外壳。如果您可以使用'btrfs'创建一个临时虚拟硬盘并将文件移动到那里(或者只是符号链接?),您可能会获得更好的性能。当然,首先删除任何明显的复杂问题(Windows安装?NFS?FUSE?) – tripleee

+0

这是一个功能相当强大的NFS,但我认为你是正确的文件系统会降低速度。感谢您的评论。 – dust

回答

3

试试这个与GNU发现:

find . -maxdepth 1 -type f -printf "." 
+0

好主意,它工作。为了清晰起见,我的“打印点”是一种简化,但实际上我使用了xargs,并对这些文件进行了更高级的操作。 – dust