tar-提取文件列表

埃莉·G(Elie G.)

如何在跟踪已提取文件的同时.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

回音麦克444

我将使用该选项--to-command触发所有提取文件的打印

该参数是一个命令,它将使用env变量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

并且output_tar.txt每个提取的文件中都有一行。

参见https://www.gnu.org/software/tar/manual/html_node/Writing-to-an-External-Program.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章