mkdir -p
のようなターゲットディレクトリを作成することはできますか。tarコマンド内に存在しないターゲットディレクトリを定義できます。tarがディレクトリを作成します。
tar -C /target/dir
を使用して出力をディレクトリにリダイレクトできることはわかっていますが、ターゲットディレクトリが存在しない場合、これは機能しません。
mkdir -p /target/dir && tar -C /target/dir
_tar -xvf bash.html_node.tar.gz --one-top-level
_
Tarコマンドのmanページから
_
--one-top-level[=DIR]
_すべてのファイルを[〜#〜] dir [〜#〜]に抽出するか、引数なしで使用する場合は、アーカイブのベース名で指定されたサブディレクトリに抽出します(_
--auto-compress
_)。
-----テスト
_tar zxvf ../aaa.tgz --one-top-level
aaa/
aaa/222
aaa/111
tree aaa
aaa/
├── 111
└── 222
_
// tgz名がアーカイブのroot_dirと同じである場合、他の影響はありません
_mv ../aaa.tgz ../bbb.tgz
tar zxvf ../bbb.tgz --one-top-level
aaa/
aaa/222
aaa/111
tree bbb
bbb
└── aaa
├── 111
└── 222
_
// tgz名がアーカイブのroot_dirと同じでない場合は、最上位のディレクトリを作成します
これは私にはもっと理にかなっています:mkdir -p /create/folder && tar -zxf haroopad-v0.13.0_x64.tar.gz -C /create/testfolder
mkdir
はフォルダを作成しますが、-p
スイッチ。 &&
を使用すると、2番目のコマンドを実行できます。典型的なtarスイッチを使用しましたが、最後に-C
は、ディレクトリを変更し、必要な場所に抽出するために使用されます。
参照: extract-files-contained-in-archive-tar-gz-to-new-directory-named-archive
作成するパスがわからない場合...
tarファイルから必要なパスを取得し、作成します...
for P in \`tar tvf tarfile.tar |tr -s [:space:] |cut -d' ' -f6\`; do
C=\`echo "${P: -1}"\` #get the last character
if [ $C = '/' ]; then
echo "Found directory: $P"
mkdir -p $P
fi
done