多线程查找执行

多线程查找执行

是否有某种机制可以使 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 %'

转换后,原始文件将被删除。

相关内容