如何使用 bash 从 tar.gz 存档中列出目录大小

Posted

技术标签:

【中文标题】如何使用 bash 从 tar.gz 存档中列出目录大小【英文标题】:How to list directories size from a tar.gz archive using bash 【发布时间】:2018-10-05 13:02:37 【问题描述】:

我有一个巨大的 tgz 存档,我知道那里有几个目录,根目录中没有文件。

我想知道里面的目录文件的确切大小,以估计它们是否适合我安装的卷。

我发现这个帖子对https://***.com/a/11721660/1004388有帮助

【问题讨论】:

【参考方案1】:

这个单线就可以了:

tar tzvf /tmp/root.tgz | sed 's/ \+/ /g' | cut -f3,6- -d' ' | cut -f1 -d'/' | awk '
    arr[$2]+=$1
   
   END 
     for (key in arr) printf("%s\t%s\n", key, arr[key])
   '

示例输出:

usr 821233945
boot    11150620

解释:

    tar tzvf filename - 以ll -r 样式列出存档中的所有文件 sed 将多个空间压缩成单个空间以帮助切割 第一个 cut 剪切第三个和第六个字段,并保留第六个字段之后的所有内容,考虑到分隔符是空格 - 现在我们在第一列中有大小,在第二列中有文件路径 第二个cut:因为我们只需要***条目,所以我们用第一个目录分隔符切断 - 只有第一个字段,考虑到/是分隔符 awk 用于按第二个字段分组,对第一个字段求​​和

【讨论】:

我不得不删除 z (我的没有压缩)并将第二个剪切更改为 -f1,2 因为我的都是以 ./ 开头的 - 非常有用 +1

以上是关于如何使用 bash 从 tar.gz 存档中列出目录大小的主要内容,如果未能解决你的问题,请参考以下文章

从存档中提取精确文件的快速方法

制作没有前缀的 mercurial 存档

如何在不包含父目录的 Python/tar 中创建 tar.gz 存档?

使用 SharpZipLib 制作没有文件夹结构的 .tar.gz 存档

如何在不解压缩内容的情况下查看 .tar.gz 存档中特定文件的内容?

解压缩 .gz 文件并将它们存储在 .tar.gz 存档中