linux tar 命令 -t 选项显示 max-depth=1

linux tar 命令 -t 选项显示 max-depth=1

tar.gz 文件可能包含许多文件和文件夹,并且文件夹中又可能包含许多文件和文件夹。

我想列出 tar.gz 文件的内容,但只能列出一个目录深度。

我该如何写这个命令?

在此处输入图片描述

答案1

tar命令没有提供执行此操作的方法,但您可以使用以下命令过滤其输出grep

tar tfz file.tar.gz | grep -v '/'

或者,添加一个级别

tar tfz file.tar.gz | grep -v '/.*/'

或者,添加另一层级的文件:

tar tfz file.tar.gz | grep -v '/.*/.*/'

答案2

grepegrep对我不起作用。

tar -tf <file.tar> | cut -f1-<whatever...> -d\ | uniq无需-v选项 f 或 即可工作tar,其中<file.tar>显而易见,但<whatever...>取决于存档目录路径的长度,例如/home/luser1/his_forgotten_stuff/home/luser2/other_desperate_deadline等。

--no-recurse我认为,和的组合--exclude= 会做得更好,但这超出了我所能处理的范围glob(),我怀疑它的行为依赖于发行版。:/ :( 。

相关内容