.in
で終わるすべてのファイルを再帰的に削除したい。これには時間がかかり、多くのコアを利用できるので、このプロセスを並列化したいと思います。 このスレッド から、xargs
またはmake
を使用してfind
を並列化できるようです。このfindのアプリケーションを並列化することは可能ですか?
これが私の現在のシリアルコマンドです:
find . -name "*.in" -type f -delete
-delete
を-print
(デフォルト)に置き換えてGNU parallelにパイプすることで、ほとんどの場合、次のようになります。
find . -name '*.in' -type f | parallel rm --
これにより、コアごとに1つのジョブが実行されます。代わりに-j N
を使用して、N
並列ジョブを使用します。
削除はおそらくCPUバウンドよりもI/Oが多いため、これが順番に削除するよりもはるかに高速に実行されることは完全には明らかではありませんが、テストすることは興味深いでしょう。
(2つのコマンドが完全に同等ではないため、「ほとんど実行する」と言いました。たとえば、入力パスの一部に改行文字が含まれている場合、parallel
バージョンは正しく機能しません。)