我有这个文件结构:
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 -
根据需要运行任意数量的进程。