3

我使用 GNU 并行已经有一段时间了,主要是为了 grep 大文件或在每个命令/参数实例很慢并且需要跨内核/主机分布时为各种参数运行相同的命令。

跨多个内核和主机做的一件很棒的事情是在一个大目录子树上找到一个文件。例如,像这样:

find /some/path -name 'regex'

/some/path如果包含许多文件和其他包含许多文件的目录,将需要很长时间。我不确定这是否容易加速。例如:

ls -R -1 /some/path | parallel --profile manyhosts --pipe egrep regex

想到类似的东西,但ls想出要搜索的文件会很慢。那么有什么好方法可以加快这样的发现呢?

4

1 回答 1

5

如果你有 N 百个直接子目录,你可以使用:

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

在它们中的每一个上并行运行find,一次十个。

但是请注意,像这样递归列出目录是一个 IO 绑定任务,您可以获得的加速将取决于支持介质。在硬盘驱动器上,它可能会更慢(如果测试,请注意磁盘缓存)。

于 2014-05-05T23:33:25.627 回答