并行批量使用 find 命令中的文件

并行批量使用 find 命令中的文件

我有这个代码来搜索当前文件夹中的目录,然后将其压缩

find . -type d -maxdepth 1 -mindepth 1 -print -exec tar czf {}.tar.gz {} \;

我有数百个文件夹,目前它是一个一个的文件夹。

我是否可以并行运行 5 个批次

答案1

使用xargs你可以实现一定程度的并行性:

find . -type d -maxdepth 1 -mindepth 1 -print0 |
xargs -t0 -n 1 -P 5 -I XX tar czf XX.tar.gz XX

-P 5标志将启动的并行进程数量限制xargs为 5 个,而-n 1用于一次仅使用一个输入行执行实用程序。我们-I XX说输入行(将是目录路径)应该替换XX命令中的字符串。

xargstar将打印出执行这些调用时的调用。删除-t即可将其关闭。

find目录路径名从with传递-print0并由xargswith接收-0(即用作\0分隔符),以允许可能的外来名称。


正如所指出的在本网站其他地方的答案中

请注意,操作的瓶颈可能是硬盘。因此,即使您确实将任务拆分为两个或多个进程,它也不会运行得更快,除非它们在不同的驱动器上运行。

相关内容