仅 tar 列出文件

仅 tar 列出文件

有趣的事实:如果你使用档案管理员并提取 .tar.gz 以便您取消选中“保留目录结构”,您将得到一个焦油炸弹

tar -ztf列出 tar 文件中的所有文件和目录。有没有办法列出 tar 文件中的所有文件,没有目录结构?

答案1

我在手册页中看不到实现此目的的方法,但您始终可以过滤结果。以下假设文件名中没有换行符:

tar tzf your_archive | awk -F/ '{ if($NF != "") print $NF }'

怎么运行的

通过将字段分隔符设置为/,最后一个字段awk知道 ( $NF) 如果正在处理文件名,则为文件名;如果正在处理目录名,则最后一个字段为空(tar在目录名中添加尾部斜杠)。因此,我们基本上是在告诉awk打印最后一个字段(如果它不为空)。

答案2

利用 Joseph R. 的建议,我们可以使用正则[^/]$表达式grep查找不以/.

tar tzf archive.tar.gz | grep -e "[^/]$"

答案3

假设所有文件名都不包含换行符:

tar -tf foo.tar | sed -e 's#.*/##' -e '\#.#!d'

/第一个 sed 命令删除一行中最后一个命令之前的所有内容,以便仅打印文件名部分。第二个命令删除现在为空的行,即以 a 结尾的行/,它们是目录。

答案4

pax(读取文件的POSIX命令tar):

pax -'s@.*/@@' < file.tar

(列出所有文件,无论其类型如何,包括目录)。

相关内容