現在のフォルダからディレクトリを検索して圧縮するコードがあります。
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
フラグは、開始される並列プロセスの数をxargs
5に制限し、-n 1
一度に1つの入力ラインのみを使用してユーティリティを実行するために使用されます。-I XX
入力行(ディレクトリパスになる)は、XX
このコマンドの文字列を置き換える必要があると言います。
xargs
tar
これらの呼び出しが行われると、呼び出しを印刷します。-t
閉じるには削除してください。
find
ディレクトリパス名は、可能な外部名を受け入れるためにwith(区切り文字として使用)で渡され、受信-print0
されます。xargs
-0
\0
指摘したとおりこのサイトの他の回答から:
ジョブのボトルネックはハードドライブかもしれません。したがって、ジョブを複数のプロセスに分割しても、異なるドライブで実行されない限り、より速く実行されません。