按大小降序从 Tar 存档中提取 3 个最小的文件

Extract 3 smallest files from Tar archive in descending order by size

如何使用命令行从 Linux 中的 Tar 文件中按降序提取 3 个最小的文件?

您可以列出文件详细信息,按大小排序,选择前 3 个文件,构建 tar x 命令,然后执行提取 3 个文件:

 tar tvf foo.tar
       |awk '[=10=]="\x99"$NF'
       |sort -n
       |awk -F'\x99' 'NR<4{s=s" "}END{print "tar xvf foo.tar "s}'
       |sh

注:

  • 以上一行假设压缩包中的所有文件名都不包含空格或其他特殊字符
  • tarball 名称 foo.tar 是硬编码的。,您应该用真正的 tarball 替换它
  • 你可以在没有最后一个管道的情况下测试cmd:|sh它只会输出生成的tar -x命令,如果没问题,你可以管道到|sh做真正的萃取。