どのようにファイルを抽出できますか?.tar.gz抽出されたファイルの痕跡を保持しながら保存しますか?
たとえば、次のようなファイル構造があるとします。
ROOT
╠═▶ children
║ ╠═▶ joe.txt
║ ╚═▶ george.txt
╠═▶ bar.txt
╠═▶ foo.txt
╚═▶ A̲R̲C̲H̲I̲V̲E̲.t̲a̲r̲.b̲z̲
├─▷ children
│ ├─▷ joe.txt
│ └─▷ bob.txt
├─▷ hello.txt
├─▷ world.txt
└─▷ foo.txt
これで、最新のファイルを保持しながらアーカイブからファイルを抽出する場合は、どのようなファイルが抽出されたかを知りたいと思います。
tar xf ./ARCHIVE.tar.gz --keep-newer-files | xargs -I EXTRACTED_FILE echo EXTRACTED_FILE
ベストアンサー1
--to-command
このオプションを使用して、抽出されたすべてのファイルの印刷をトリガーします。
引数は、環境変数TAR_FILENAMEを使用してファイル名を取得するコマンドです。STDIN
STDIN
したがって、抽出されたファイルを読み込み、生成する必要があり、STDOUT
生成されたファイルに印刷できます。
tar -xzf ../ARCH.tgz --keep-newer-files \
--to-command="sh -c $(printf '%q' \
'mkdir -p "$(dirname "$TAR_FILENAME")";dd of="$TAR_FILENAME" >/dev/null 2>&1;echo "#EXTRACTED#$TAR_FILENAME" ')" > output_tar.txt
抽出された各ファイルには1行がありますoutput_tar.txt
。
バラより外部プログラムへの書き込み詳しくは