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