gpt4 book ai didi

linux - 在几个文件夹上加速 GNU 查找

转载 作者:太空宇宙 更新时间:2023-11-04 09:27:05 25 4
gpt4 key购买 nike

在 Linux 64 位 CentOS 服务器上,我在几个文件夹上运行 GNU find 命令,每个文件夹都包含类似的子文件夹结构。结构是:

/my/group/folder/project_123/project_123-12345678/*/*file_pattern_at_this_level*
/my/group/folder/project_234/project_234-23456789/*/*file_pattern_at_this_level*

文件夹星号/*/ 表示每个项目文件夹中有一堆子文件夹,名称各不相同。

我尝试添加最后一个星号,然后将查找命令限制为特定的 -mindepth N-maxdepth N:

find $folder1 $folder2 $folder3 -mindepth 1 -maxdepth 1 -name "*file_pattern*"

但是测试是在有其他运行作业的服务器节点上进行的,因此很难获得公平的性能比较,这也主要是由于在第一个命令之后发生了某种级别的缓存,这使得第一种命令很慢和第二个等效类型更快。

这是一个多核节点,那么我还能尝试什么来使此类命令更快?

最佳答案

“实际上像 find 和 grep 这样的命令几乎总是 IO-bound:磁盘是瓶颈,而不是 CPU。在这种情况下,如果您并行运行多个实例,它们将竞争 I/O 带宽和缓存,所以它们会变慢。” - https://unix.stackexchange.com/a/111409

不要担心“找到”文件,担心你需要用它们做什么。为此,您可以使用“parallel”或“xargs”进行并行化。

如果您仍然想这样做,您仍然可以尝试将“parallel”与 find 一起使用,传递目录列表。这将导致并行产生一堆查找进程(-j 选项设置将同时运行多少“线程”)来处理“队列”。在这种情况下,您需要将 std out 设置到一个文件中,以便您可以稍后查看输出,也可以不查看,具体取决于您的使用情况。

关于linux - 在几个文件夹上加速 GNU 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35272034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com