数百のサブディレクトリがあるディレクトリがあります。各サブディレクトリをtarして圧縮し、結果のファイルに<currentDirName>.tar.bz2
という名前を付けたいと思います。
私はやった:
find ./dir -type f -print0 | xargs -0 -n1 -P100 bunzip2
一度に100個のファイルを解凍します。 (私は海洋モデリングを行っているので、私のマシンは多くのクアッドコアで非常に強力です。)圧縮されたアーカイブファイルにその場で名前を付ける方法についての情報を含めながら、上記のような方法がわかりません。それぞれにtar cfj dir.tar.bz2 dir
をしたくありません。
上記のbunzipコマンドのように一度に100以上を実行できるように、各ディレクトリ名をtarファイル名として自動的に使用して(findまたはparallelを使用して)実行できますか?
ご入力ありがとうございます。
....ピーター
次のbash
ワンライナーは、おおよそあなたが説明したことを実行し、各ディレクトリを独自のtarballに配置します。
for d in dir/*/; do { tar -cj "$d" > "${d%/}.tar.bz2" ; } & done ; while [ "$(jobs)" ] ; do fg &>/dev/null ; done ; echo done