Как вывести список каталогов из архива tar.gz, используя bash - PullRequest
0 голосов
/ 05 октября 2018

У меня огромный архив tgz, и я знаю, что там есть несколько каталогов, в корне нет файлов.

Я хочу знать точный размер файлов каталогов внутри, чтобы оценить, поместятся ли они в моем смонтированном файле.тома.

Я нашел эту ветку, помогающую https://stackoverflow.com/a/11721660/1004388

1 Ответ

0 голосов
/ 05 октября 2018

Этот однострочный текст поможет:

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. first cut, обрезает третье и шестое поля и оставляет все после шестого поля без изменений,учитывая, что разделителем является пробел - теперь у нас есть размер в первом столбце и путь к файлу во втором столбце
  4. second cut: поскольку нам нужны только записи верхнего уровня, мы обрезаем первый разделитель каталогов - только первыйполе, учитывая / - разделитель
  5. awk используется для группировки по второму полю, суммируя первое
...