是否有某种机制可以使 find 与 -exec 使用多个作业?
让我们使用这个命令作为例子
find ./* -exec flac --best {} \;
有没有什么方法可以设置并发命令的数量,-exec
以便比以下解决方案更容易运行:
运行find ./*
并将结果保存到文件/通过管道将它们用于另一个命令,将其分为 16 个部分(或任意数量的线程),然后在这些部分上运行命令?
答案1
如果使用 xargs 则可以设置worker的数量
find . -type f -print0|xargs -0 -P 16 -I % opusenc --bitrate 256 % %.opus
xargs -P 16
(因为我很难在网上找到更多详细信息或理解手册页部分)
它一次对 16 个输入执行您的命令,或者您传递给 -P 的输入数。
对于我的命令,我试图将 cd 音乐文件 [艺术家/专辑/音乐文件] 的组织文件夹转换为作品。这是一个复制的文件夹,所以我想删除原始文件夹。所以比我使用的命令更好的命令是
find . -type f -print0|xargs -0 -P 16 -I % sh -c 'opusenc --bitrate 256 % %.opus && rm %'
转换后,原始文件将被删除。