Как перечислить рекурсивные размеры файлов файлов и каталогов в каталоге?

Как мне перечислить все файлы в каталоге и их рекурсивные размеры файлов?

---редактировать

Я хочу видеть размеры, "свернутые" в родительские каталоги в указанном каталоге. Я не хочу видеть дочерние каталоги или их содержимое или размеры.

9 ответов

Решение

Я думаю, что самый простой способ, набрав ls -l, или же ls -lh который предоставит размер файла в удобочитаемом формате (КБ, МБ и т. д.).

Если "рекурсивно" означает перечисление всех последующих папок, например:

/ Foo /
/ foo / bar /....

Затем вы должны также добавить параметр R, лайк ls -lR или же ls -lhR

Больше информации для ls можно найти, набрав man ls

Обновить:

Следующая команда, предложенная Лекенштейном, вероятно, сделает эту работу:

du -h --max-depth=1 <folder>

-h предназначен для чтения человеком
--apparent-size это еще один способ отображения размеров, как уже говорилось
--max-depth это уровень подпапок, на который вы хотите перейти.

apt-get install ncdu

введите описание здесь

Он также интерактивен, поэтому, если вы хотите проверить подпапку, просто ВВЕРХ, ВНИЗ и войдите в нее.

Чтобы получить общий размер каталога и всех детей

du -hs directory/*

Также проверьте tree, Он не установлен по умолчанию, но является репозиторием.

Пример:

richard@legend:~$ tree Applications/ -s
Applications/
├── [           4096]  AlexFTPS-1.0.2
│   ├── [      31232]  AlexPilotti.FTPS.Client.dll
│   ├── [     274432]  C5.dll
│   ├── [       1457]  C5-License
│   ├── [      35147]  COPYING
│   ├── [       7639]  COPYING.LESSER
│   ├── [         70]  ftps
│   ├── [      28672]  ftps.exe
│   ├── [      98304]  Plossum CommandLine.dll
│   ├── [       1557]  Plossum-License
│   └── [       2560]  README
└── [           4096]  src
    └── [     180849]  AlexFTPS_bin_1.0.2.zip

Дополнительные параметры можно найти на странице руководства.

Поскольку вы не упоминаете, что вам нужно решение на основе терминала, я думаю, что baobab aka Disk Usage Analyzer отсутствует в списке.

Он установлен в Ubuntu по умолчанию и выполняет именно то, что вам нужно, в красивом графическом интерфейсе с возможностью детализации иерархии каталогов.

Помимо отображения списка каталогов с их размерами, он также показывает кольцевую или древовидную диаграмму использования файловой системы, что чрезвычайно полезно для визуализации каталогов, занимающих больше всего места.

баобаб Анализатор использования дисков

Терминальное решение - это du команда:

du --all --human-readable --apparent-size

(Стенограмма: du -ah --apparent-size)

du отображает использование диска для каждого файла и каталога. Варианты объяснены:

  • --all, -a - показывать размеры файлов, а не только каталогов
  • --human-readable, -h - показывать размеры в удобочитаемом формате, например 10K (10 килобайт), 10 (10 байт)
  • --apparent-size - показать фактический размер файла, а не размеры, используемые диском.

Это, кажется, делает трюк, когда задействованы симлинки.

ls -LRlh

Чтобы получить отсортированный список, поместите все в МБ и сортируйте:

du -m * | sort -n

Или используйте инструмент, такой как DiskReport, для создания отчета о полном дереве дисков.

Мне нравится такой подход:

du -schx .[!.]* * | sort -h

где:

  • s: отображать только сумму для каждого аргумента
  • c: произвести общую сумму
  • h: размеры печати в удобочитаемом формате
  • x: пропускать каталоги в разных файловых системах
  • .[!.]* *: Суммировать использование диска каждым файлом, рекурсивно для каталогов (включая "скрытые")
  • | sort -h: Сортировка на основе удобочитаемых чисел (например, 2K 1G).

Еще одно терминальное решение с find и сортировать (по размеру файла, столбец 1)

$ find . -maxdepth 1 ! -path . -printf "%s %p\n" | sort -n -k1                              
178 ./somefile.txt
219 ./somefile2.txt
4096 ./c
4096 ./cs2
4096 ./perl
4096 ./python
4096 ./random
4096 ./sh

Для перечисления размера содержимого папки с меньшим набором текста (-d это сокращение от --max-depth)

du -hd1
Другие вопросы по тегам