我有一个庞大的tgz档案,我知道那里有几个目录,根目录中没有文件。
我想知道其中的目录文件的确切大小,以估计它们是否适合我已装入的卷。
答案 0 :(得分:0)
这种单线可以解决问题的方法
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
用于按第二个字段分组,将第一个字段相加