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

时间:2018-10-05 13:02:38

标签: bash tar archive

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

我想知道其中的目录文件的确切大小,以估计它们是否适合我已装入的卷。

我发现此线程有助于https://stackoverflow.com/a/11721660/1004388

1 个答案:

答案 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

说明:

  1. tar tzvf filename-以ll -r样式列出存档中的所有文件
  2. sed将多个空间压缩为一个空间以帮助切割
  3. 第一个cut剪切第三和第六个字段,并在第六个字段之后保留所有内容,考虑到分隔符是空格-现在我们在第一列中具有大小,在第二列中具有文件路径
  4. 第二个cut:由于我们只需要顶层条目,因此我们以第一个目录分隔符-仅第一个字段为切入点,考虑到/是分隔符
  5. awk用于按第二个字段分组,将第一个字段相加