999回圧縮された同じ名前のファイルがあります**flag_999.tar.gz**
。何も動作しないので、これらすべてのファイルやbashスクリプトを解凍する方法はありますか?
ファイル名は flag_999.tar.gz で、アーカイブの内部には flag_998.tar.gz があり、アーカイブの内部には flag_997.tar.gz があります。したがって、ここで「flag_」は定数であり、数値が減少し、内部のファイル名を解決するために手動でflag_967.tar.gzに到達します。
私は試した:
file=(*tar); while [[ -e $file ]]; do tar zxf "$file"; rm "$file"; file=(*tar); done
出力なし
awk -F'\0' '/[^\0]/{print $(NF)}' flag_999.tar.gz
出力を読み取れません。
for i in {1000..1}; do tar -xf $i.tar; done
たぶんこれが効果があるかもしれませんが、使い方がわからないのでよくわかりません。
ファイルを表示してダウンロードするには、ここをクリックしてください。https://drive.google.com/file/d/1ycWVR0htwFyexCJRohTGHio4UFdvGuPW/view?usp=sharing
ベストアンサー1
GNU実装では、次のスクリプトをtar
書くことができます。extract
#! /bin/sh -
PROGNAME="$0" exec tar -zxvvf - --to-command='
case "$TAR_FILENAME" in
(*.tar.gz | *.tgz) exec "$PROGNAME";;
(*) set -o noclobber
mkdir -p -- "$(dirname -- "$TAR_FILENAME")" &&
exec cat > "$TAR_FILENAME"
esac' 3<&-
次のように呼び出されます。
path/to/extract < flag_999.tar.gz
あなたの場合。
tar
スクリプトは、--to-command
名前または末尾の各アーカイブメンバーに対して 'を介して再帰的に.tar.gz
自分自身を呼び出します.tgz
。中間のtarファイルをディスクに保存せずにすぐにファイルを抽出します。
一般ファイルのみを抽出し、ファイルメタデータは復元しません。