並列配置で find コマンドでファイルを使用する

並列配置で find コマンドでファイルを使用する

現在のフォルダからディレクトリを検索して圧縮するコードがあります。

find . -type d -maxdepth 1 -mindepth 1 -print -exec tar czf {}.tar.gz {} \;

何百ものフォルダがあり、現在は1つずつあります。

5つのバッチを並列に実行できますか?

ベストアンサー1

以下を使用して、xargsある程度の並列性を達成できます。

find . -type d -maxdepth 1 -mindepth 1 -print0 |
xargs -t0 -n 1 -P 5 -I XX tar czf XX.tar.gz XX

この-P 5フラグは、開始される並列プロセスの数をxargs5に制限し、-n 1一度に1つの入力ラインのみを使用してユーティリティを実行するために使用されます。-I XX入力行(ディレクトリパスになる)は、XXこのコマンドの文字列を置き換える必要があると言います。

xargstarこれらの呼び出しが行われると、呼び出しを印刷します。-t閉じるには削除してください。

findディレクトリパス名は、可能な外部名を受け入れるためにwith(区切り文字として使用)で渡され、受信-print0されます。xargs-0\0


指摘したとおりこのサイトの他の回答から:

ジョブのボトルネックはハードドライブかもしれません。したがって、ジョブを複数のプロセスに分割しても、異なるドライブで実行されない限り、より速く実行されません。

おすすめ記事