linux - 使用 GNU parallel 在巨大的目录树上加速查找命令的最佳方法是什么?

标签 linux bash parallel-processing gnu-parallel

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

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

find/some/path -name 'regex'

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

ls -R -1/一些/路径 |并行 --profile manyhosts --pipe egrep 正则表达式

我想到了类似的东西,但是 ls 搜索文件的速度会很慢。那么加快此类查找的好方法是什么?

最佳答案

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

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

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

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

关于linux - 使用 GNU parallel 在巨大的目录树上加速查找命令的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23483162/

相关文章:

linux - Linux 上的 GZip 来压缩文本文件中指定的文件

linux - 在 Linux 中使用 chdir() 实现 cd 命令

linux - 什么命令控制/etc/rc*.d 在 Redhat/CentOS 上的行为?

bash - genisoimage 脚本不能刻录大于 4GB 但小于 4.5GB 的文件?

email - cron:将输出发送到文件,然后通过电子邮件将文件发送给我

linux - 我无法在/etc/security/limits.conf 中分配 100KB 和 "fileuser - memlock unlimited"

c - argv、envp、argc(命令行参数)的最大汇总大小始终远离 ARG_MAX 限制

c++ - 并行化应用程序的建议?

python - 如何在 python + linux 中监听端口并行

python - 大文本文件的并行计算