按大小排序列出 .tar.bz2 中的所有文件

7
我使用这个命令列出存档中的所有文件:
示例代码: tar -tf archive.tar
tar jtvf blah.tar.bz2

如何按大小排序列出它们?或者仅列出最大的文件(即大于10MB的文件)?
1个回答

14
列出文件,按大小过滤,只打印大小+空格+路径,并按大小降序排序:
在我测试的每台机器上(回到2016年,当这个答案被写下时:不知道...类似的事情但更旧,加上可能是FreeBSD 8;今天:Artixlinux,Ubuntu 20.04,Ubuntu 22.04,CentOS 7,Devuan 3,Devuan 4),输出总共有5列,第3列是大小,第5列是文件名):
size=10485760
tar tvf blah.tar.bz2 \
    | awk -v size="$size" '$3 >= size {print $3" "$5}' \
    | sort -t' ' -k1,1nr

如果你使用的是某个未定义的操作系统,也许你的数据在第5和第9个字段中,然后使用以下命令:
size=10485760
tar tvf blah.tar.bz2 \
    | awk -v size="$size" '$5 >= size {print $5" "$9}' \
    | sort -t' ' -k1,1nr

1
awk -v size="$size" '$5 >= size {print $5" "$9}' - Giuseppe Donato
只有在您的系统不将日期打印为%Y-%m-%d %H:%M:%S时,此方法才有效,否则您将得到一个类似于10485760 17:51的输出,其中包含大小和时间,因为awk将日期和时间之间的空格视为另一列。要解决此问题,只需将第一个答案中的$5替换为$6,问题就会解决! - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接