带有“-O, --to-stdout”的 tar 无法正确显示所有文件

带有“-O, --to-stdout”的 tar 无法正确显示所有文件

我有这个文件结构:

tree .           
.
├── AAA
│   ├── a1.txt
│   ├── a2.txt
│   └── a3.txt
├── AAA.tar.gz
├── BBB
│   ├── b1.txt
│   ├── b2.txt
│   └── b3.txt
├── BBB.tar.gz
├── CCC
│   ├── c1.txt
│   ├── c2.txt
│   └── c3.txt
├── CCC.tar.gz
└── tar_test.tar.gz

清单档案正确显示:

tar tf tar_test.tar.gz
AAA.tar.gz
BBB.tar.gz
CCC.tar.gz

但我尝试列出内部档案失败了......

tar xfO tar_test.tar.gz | tar ztf -
AAA/
AAA/a1.txt
AAA/a3.txt
AAA/a2.txt

我需要做哪些改变才能实现:

tar [magic1] tar_test.tar.gz | tar [magic2]
AAA/
AAA/a1.txt
AAA/a3.txt
AAA/a2.txt
BBB/
BBB/b1.txt
BBB/b3.txt
BBB/b2.txt
CCC/
CCC/b1.txt
CCC/b3.txt
CCC/b2.txt

谢谢你!

答案1

tar ztf -只需要一个档案。每个档案都需要一个这样的进程。这可以通过--to-command前导选项来完成tar

tar xf tar_test.tar.gz --to-command='tar ztf -'

man 1 tar

--to-command=COMMAND
将提取的文件通过管道传输到COMMAND。参数是外部程序的路径名,也可以使用命令行参数。[…]

诀窍是,每个由领先者提取的单个文件tar都将通过管道传输到自己的分离的实例COMMAND。这样,您就可以tar ztf -根据需要运行任意数量的进程。

相关内容