linux - 使用GNU parallel在大型目录树上加快find命令的最佳方法是什么?

原文 标签 linux bash parallel-processing gnu-parallel

我使用gnu parallel已经有一段时间了,主要是为了在每个command/arg实例速度很慢并且需要跨核心/主机分布时,为大文件创建grep或对不同参数运行相同的命令。
在多个核心和主机上找到一个大目录子树上的文件是一件很好的事情。例如,如下所示:
find /some/path -name 'regex'
如果/some/path包含许多文件和其他包含许多文件的目录,则需要很长时间。我不确定这是否容易加速。例如:
ls -R -1 /some/path | parallel --profile manyhosts --pipe egrep regex
我想到了一些类似的东西,但是ls会很慢地找到要搜索的文件。那么,有什么好办法可以加快这种发现的速度呢?

最佳答案

如果您有N个直接子分区,则可以使用:

 parallel --gnu -n 10 find {} -name 'regex' ::: *

在每一个上并行运行,一次运行十个。
不过,请注意,递归地列出这样的目录是一个IO绑定的任务,您可以获得的加速将取决于备份介质。在硬盘上,速度可能会慢一些(如果测试,请注意磁盘缓存)。

相关文章:

linux - shell脚本以匹配列并将新列从文件添加到表中

hadoop - 如何在单机上运行Hadoop?

.net - 如何在任务异常处理数组中包含任务参数

regex - 为什么我的sed命令有时无法与r标志一起使用

linux - Bash:IF和ELSE,比较和逻辑或门?

linux - 将txt行转换为变量,除以分隔符检查并重写txt send命令

linux - FORTRAN内存利用率-静态与动态

python - Pip安装没有安装到正确的目录?

python - pool.map:TypeError map()从x到y接受位置参数,但给定z

linux - Ubuntu 12.10风扇超速[关闭]