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


50

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

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

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


1
Вы имеете в виду, что хотите увидеть общий размер (сумму) всех файлов в папке, например, щелкнув правой кнопкой мыши папку на рабочем столе и выбрав «Свойства»?
Павлос Г.

Вы ищете программное обеспечение, которое поможет вам найти большие файлы или что-то, чтобы получить (сворачиваемое) файловое дерево?
Лекенштейн

Привет @Pavlos G - я имею в виду сумму для каждого из каталогов в каталоге, в котором я сейчас нахожусь, а не сумму для общего каталога.
Соколиный глаз

@JG - Проверьте мое обновление ;-)
Павлос Г.

Ответы:


53

Я предполагаю, что самый простой способ - это набрать текст 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уровень вложенных папок, на который вы хотите перейти.


Что использовать для максимальной глубины? -1?
dylanh724

61
apt-get install ncdu

введите описание изображения здесь

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


Как раз то, что я искал. Большое спасибо!
Mathlight

Возможно самая удивительная рекомендация программного обеспечения, которую я когда-либо получал
SomethingSomething

это должен быть одобренный ответ
dvdmn

30

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

du -hs directory/*

Я бы хотел следующий уровень ниже - рекурсивные размеры всех детей первого уровня.
Соколиный глаз

1
Я отредактирую свой ответ. Вам нужно использовать директорию du -h / *
Ричард Холлоуэй

17

Также проверьте 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

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


Должны ли быть показаны размеры?
Соколиный глаз

JG: -s показывает размеры.
Ричард Холлоуэй

1
Показывает размер записи каталога, а не полный размер каталога.
Стивен Лу

-hпоказать размер в удобочитаемом виде, напримерtree -s
Эрик Ван

15

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

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

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

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


7

Терминал решением является duкомандой:

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

(сокращенное: du -ah --apparent-size)

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

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

Я просто хотел детей первого уровня
Соколиный Глаз

2
@hawkeye для 1-го уровня, который вы можете использовать--max-depth=1
nikoskip

4
@nikoskip хороший совет! Также приятно знать, что стенография --max-depth=1может быть сокращена до -d1.
Лекенштейн

как получить все это в порядке убывания размера ..
kRazzy R

как просмотреть содержимое и пусто: / dev / sda5 ext4 430G 381G 27G 94% / моему ноутбуку меньше 1 месяца, и он настолько полон, что не имеет смысла
kRazzy R

2

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

ls -LRlh

данный ответ не дал мне деталей для simlinks (ls -lhR), числа, перечисленные рядом с ним, также не соответствовали нужному размеру каждого из значений. Мой ответ дал мне иерархию с определенной древовидной структурой и правильным ответом ... ИЛИ Вы имеете в виду какой-то другой ответ с голосованием?
Малки

Отклонено, проголосовав. Пожалуйста, отредактируйте и поместите комментарий в ответ ... Спасибо за объяснение. ;-)
Фабби,

1

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

du -m * | sort -n

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


1

Другое терминальное решение с 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

Это не показывает размер каталога.
Муру
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.