Linux bashシェルでは、私のファイルは次のようになります。
xyz_a.tgz xyz_b.tgz xyz_c.tgz
各ファイルを別々のフォルダに抽出したいと思います。
a b c
私はこれを試みます:
$ for file in xyz_*.tgz ;do tar -xzf $file -C $file --strip -component=1;done
しかし、それは詰まった。助けてください?
ベストアンサー1
$ for file in xyz_*.tgz; do
dir="${file/.tgz}";
dir="${dir/xyz_}";
echo mkdir -p "$dir";
echo tar -C "$dir" xfz "$file";
done
mkdir -p a
tar -C a xfz xyz_a.tgz
mkdir -p b
tar -C b xfz xyz_b.tgz
mkdir -p c
tar -C c xfz xyz_c.tgz
(読みやすくするために改行を追加しました。そのまま実行するか、1行にマージできるようにセミコロンを残しました。)
これを行う1つの方法のパイロットの例は次の通りである。 2つのbashパターン置換コマンドを使用してサフィックス.tgz
とプレフィックスを削除して、ファイル名ごとxyz_
に一致するFireory名を抽出します。次に、各ディレクトリが.tgzで終わっていることを確認するコマンドを印刷しますmkdir p
。最後に、tar
各.tgzファイルを独自のディレクトリに抽出するコマンドを印刷します。
echo
実際にこれらのコマンドを実行するには、行を削除します。mkdir
tar