2013-02-19 15:34:27 +0000 2013-02-19 15:34:27 +0000
104
104

Отображать каждый подкаталог размером в список в формате одной строчной команды в Bash?

Я хочу получить список каталогов и их размеров в формате списка, например, как вы получаете, когда делаете ls -l.

Дело в том, что есть команда из одной строки, которая может это сделать? Я вижу, что у других есть длинные команды, чтобы просто вывести это. Это слишком длинная.

Какая команда может сделать это или комбинация команд, которые можно легко набрать? du -h дает ее, но она отображает все подпапки, что не то, что мне нужно, а только текущие папки каталогов.

Ответы (4)

126
126
126
2013-02-19 15:36:20 +0000

Попробуйте это

du -h --max-depth=1

Выход

oliver@home:/usr$ sudo du -h --max-depth=1
24M ./include
20M ./sbin
228M ./local
4.0K ./src
520M ./lib
8.0K ./games
1.3G ./share
255M ./bin
2.4G .

Альтернатива

Если --max-depth=1 слишком длинный для вашего вкуса, вы также можете попробовать использовать:

du -h -s *

Это использует -s (--summarize) и по умолчанию будет печататься только размер самой папки. Передавая все элементы в текущей рабочей директории (*), она производит такой же вывод, как и --max-depth=1:

выводит

oliver@cloud:/usr$ sudo du -h -s *
255M bin
8.0K games
24M include
520M lib
0 lib64
228M local
20M sbin
1.3G share
4.0K src

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

Второй подход вычислит общий размер всех переданных элементов individually. Таким образом, он включает в вывод симлинк lib64, но исключает скрытые элементы (имя которых начинается с точки). Также не хватает суммарного размера для текущей рабочей директории, так как это не было передано в качестве аргумента.

79
79
79
2016-06-17 23:04:29 +0000

Вы, вероятно, захотите увидеть каталоги, заказанные по размеру:

$ du -hs * | sort -hr

856M lib
746M share
612M lib64
312M src
267M java
239M bin
179M sbin
173M local
93M i686-w64-mingw32
72M libexec
26M include
20M puppet
772K X11R6
20K man
4.0K games
4.0K etc
0 tmp
6
6
6
2014-11-06 14:52:37 +0000

Распечатайте размеры всех файловых папок и скрытых файлов на диске:

el@dev /home/el $ du -sh `ls -a`
258M .
265M ..
4.0K .classpath
258M .git
4.0K .gitignore
9.0K nbactions.xml
12K README
20K .README.swp
4.0K run.sh
23K XmlPostPropagate.php
3
3
3
2016-06-12 12:29:56 +0000

Стоит упомянуть команду NCurses Disk Usage shell.

Ncdu - это анализатор использования диска с интерфейсом ncurses. Он предназначен для поиска пространственных хог-файлов на удаленном сервере, где нет полной графической настройки, но это полезный инструмент даже на обычных настольных системах. Ncdu стремится быть быстрым, простым и легким в использовании, и должен быть способен работать в любой минимальной POSIX-подобной среде с установленными ncurses.

Domande correlate

6
10
11
5
10