【发布时间】:2015-05-09 09:40:33
【问题描述】:
我正在尝试对单个文件夹中的约 200,000 个文件进行处理。
当我这样做时:
for i in *; do /bin/echo -n "."; done
每隔几秒打印一个点。对包含一百个文件的文件夹执行相同操作的速度非常快。
为什么会这样?如何加快处理数千个文件的文件夹?
【问题讨论】:
-
创建一个线程进程及时做到这一点
-
瓶颈可能是你的文件系统,而不是shell。如果您可以使用
btrfs创建一个临时 ramdisk 并将文件移动到那里(或者只是符号链接?)您可能会获得更好的性能。当然,首先要消除任何明显的复杂性(Windows 挂载?NFS?FUSE?) -
这是一个相当强大的带有 NFS 的 Linux,但我认为你是对的,文件系统减慢了这一速度。感谢您的评论。
-
每次调用
/bin/echo时,您都会开始一个新进程。请改用 shell 内置echo,或printf内置。