我有这个代码来搜索当前文件夹中的目录,然后将其压缩
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
命令中的字符串。
xargs
tar
将打印出执行这些调用时的调用。删除-t
即可将其关闭。
find
目录路径名从with传递-print0
并由xargs
with接收-0
(即用作\0
分隔符),以允许可能的外来名称。
正如所指出的在本网站其他地方的答案中:
请注意,操作的瓶颈可能是硬盘。因此,即使您确实将任务拆分为两个或多个进程,它也不会运行得更快,除非它们在不同的驱动器上运行。