如何使用 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 存档中列出目录大小的主要内容,如果未能解决你的问题,请参考以下文章
如何在不包含父目录的 Python/tar 中创建 tar.gz 存档?
使用 SharpZipLib 制作没有文件夹结构的 .tar.gz 存档