web-dev-qa-db-ja.com

untar filename.tr.gzをディレクトリ「filename」に

アーカイブを解凍します。シェルコマンドを使用して、「tar123.tar.gz」をディレクトリ/ myunzip/tar123 /に保存します。

tar -xf tar123.tar.gzはファイルを解凍しますが、作業しているのと同じディレクトリにあります。

ファイル名が「tar233.tar.gz」になる場合は、/ myunzip/tar233.tar.gzに解凍して、宛先ディレクトリがファイル名に基づくようにします。

Tarコマンドがこれを実行できるかどうか誰かが知っていますか?

32
Jorre

BashとGNU tar:

file=tar123.tar.gz
dir=/myunzip/${file%.tar.gz}
mkdir -p $dir
tar -C $dir -xzf $file
33
Randy Proctor
tar -xzvf filename.tar.gz -C destination_directory
34
Jorg B Jorge

-Cフラグを使用して抽出する前にディレクトリを変更できますが、ディレクトリはすでに存在している必要があります。 (ファイル固有のディレクトリを作成する場合は、それらをfoo.tar.gzと呼ばないように強くお勧めします。拡張子は、アーカイブファイルであることを意味しますが、実際にはディレクトリです。willは混乱を招きます。)

4
Kilian Foth

試す

file=tar123.tar.gz
dir=/myunzip/$(basename $file .tar.gz)   # matter of taste and custom here
[ -d "$dir" ] && { echo "$dir already exists" >&2; exit 1; }
mkdir "$dir" && ( gzip -d "$file | ( cd "$dir" && tar xf - ) )

GNU tarを使用している場合は、それにオプション-C "$dir"抽出する前にディレクトリに移動します。ただし、上記のコードはBronze Ageタールでも機能するはずです。

免責事項:上記のコードはいずれもテストされていません。

2
Norman Ramsey