find を使用した再帰削除の並列化

find を使用した再帰削除の並列化

すべてを再帰的に削除したいです.in。時間がかかり、利用可能なコアが多いので、このプロセスを並列化したいと思います。 ~からこのスレッドxargs、使用またはmake並列化できるようですfind。このfindアプリケーションを並列化できますか?

これは私の現在のシリアルコマンドです。

find . -name "*.in" -type f -delete

ベストアンサー1

これを(デフォルト)-deleteに置き換えてGNU並列にパイピングすると、トリックを実行できます。-print

find . -name '*.in' -type f | parallel rm --

これにより、コアごとに1つのジョブが実行されます。代わりに並列操作を使用してください-j NN

削除はおそらくCPU制限よりもI / Oが多いので、これが順次削除より速く実行されるかどうかはわかりませんが、テストしてみるのは興味深いでしょう。

(2つのコマンドがまったく同じではないため、「ほとんど」と言います。たとえば、parallel入力パスの一部に改行文字が含まれている場合、このバージョンは正しい操作を行いません。)

おすすめ記事