現在のフォルダでdirを検索し、それをtarするためのこのコードがあります
find . -type d -maxdepth 1 -mindepth 1 -print -exec tar czf {}.tar.gz {} \;
私は何百ものフォルダを持っています、そして現在それは一つずつフォルダをします。
5つのバッチで並行して実行できる可能性はありますか
xargs
を使用すると、ある程度の並列処理を実現できます。
find . -type d -maxdepth 1 -mindepth 1 -print0 |
xargs -t0 -n 1 -P 5 -I XX tar czf XX.tar.gz XX
xargs
によって開始される並列プロセスの数を5つに制限するのは-P 5
フラグですが、-n 1
は、一度に1つの入力行でのみユーティリティを実行するために使用されます。 -I XX
を使用すると、コマンドの文字列XX
の代わりに、ディレクトリパスとなる入力行を使用する必要があると言います。
xargs
は、実行時にtar
の呼び出しを出力します。これをオフにするには、-t
を削除します。
ディレクトリパス名は、find
から-print0
で渡され、xargs
が-0
で受信します(つまり、\0
を区切り文字として使用します)。 。
指摘されているように このサイトの他の場所での回答で :
操作のボトルネックはハードドライブである可能性が高いことに注意してください。そのため、タスクを2つ以上のプロセスに分割したとしても、それらが異なるドライブで動作しない限り、タスクは速くなりません。