マルチスレッドルックアップの実行

マルチスレッドルックアップの実行

複数のタスクを使用して-execでタスクを見つけることができるメカニズムはありますか?

このコマンドを例に挙げてみましょう。

find ./* -exec flac --best {} \;

-exec次の解決策よりも実行しやすいように同時コマンド数を設定する方法はありますか?

結果を実行しfind ./*、ファイルに保存するか、別のコマンドにパイプし、それを16個の部分(または任意の数のスレッド)に分割し、その部分に対してコマンドを実行しますか?

ベストアンサー1

xargsを使用すると、ワーカーの数を設定できます

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 %'

変換後、元のファイルが削除されます。

おすすめ記事