Как определить общий размер каталога (папки) из командной строки?
Есть ли простая команда для отображения общего размера совокупности (использования диска) всех файлов в каталоге (папке)?
Я пробовал это, и они не делают то, что я хочу:
-
ls -l
, который отображает только размер отдельных файлов в каталоге, а -
df -h
, который отображает только свободное и используемое пространство на моих дисках.
11 ответов
Команда du
"суммирует использование диска каждого FILE, рекурсивно для каталогов", например,
du -hs /path/to/directory
-
-h
заключается в том, чтобы получить числа «читаемые человеком», например. get140M
вместо143260
(размер в килобайтах) -
-s
предназначен для сводки (в противном случае вы получите не только размер папки, но и все в папку отдельно)
Когда вы используете -h
, вы можете отсортировать считываемые человеком значения, используя
du -sh | sort -h
Флаг -h
в sort
будет учитывать значения размера «Human Readable».
Если вы хотите избежать рекурсивного перечисления всех файлов и каталогов, вы можете указать параметр --max-depth
, чтобы ограничить количество отображаемых элементов. Чаще всего --max-depth=1
du -sh --max-depth=1 /path/to/directory
Недавно я нашел отличный интерактивный инструмент, основанный на ncurses, который быстро дает вам обзор размеров каталогов. Искал этот инструмент в течение многих лет.
- быстро развернуть иерархию файлов
- вы можете удалить, например. огромные временные файлы изнутри инструмента
- очень быстро
Подумайте об этом как baobab для командной строки:
apt-get install ncdu
Это находит рекурсивный размер и помещает его рядом с именем каждой папки вместе с общим размером внизу, все в человеческом формате
du -hsc *
tree
- еще одна полезная команда для этого задания:
Просто установите его с помощью sudo apt-get install tree
и введите следующее:
tree --du -h /path/to/directory
...
...
33.7M used in 0 directories, 25 files
-h Print the size of each file but in a more human readable way, e.g. appending a size letter for kilo‐
bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).
--du For each directory report its size as the accumulation of sizes of all its files and sub-directories
(and their files, and so on). The total amount of used space is also given in the final report (like
the 'du -c' command.)
Ниже приводится то, что я использую для печати общего количества, папки и размера файла:
$ du -sch /home/vivek/* | sort -rh
Подробнее
------------------------------------------------------------
-c, --total
produce a grand total
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
-s, --summarize
display only a total for each argument
-------------------------------------------------------------
-h, --human-numeric-sort
compare human readable numbers (e.g., 2K 1G)
-r, --reverse
reverse the result of comparisons
Выход
70M total
69M /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib
992K /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results
292K /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target
52K /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files
В ответах было очевидно, что du
- это инструмент для поиска общего размера каталога. Однако есть несколько факторов, которые следует учитывать:
-
Иногда вывод
du
может вводить в заблуждение, поскольку он сообщает пространство, выделенное файловой системой, которое может отличаться от суммы размеров отдельных файлов. Обычно файловая система будет выделять 4096 байт для файла, даже если вы сохранили в нем только один символ! -
Разница в выходе из-за мощности 2 и мощности 10 единиц. Переключатель
-h
наdu
делит количество байтов на 2 ^ 10 (1024), 2 ^ 20 (1048576) и т. Д., Чтобы дать возможность для чтения человеком. Многие люди могут быть более привыкли видеть силу 10 (например, 1K = 1000, 1M = 1000000) и быть удивлены результатом.
Чтобы найти общую сумму размеров всех файлов в каталоге, в байтах, выполните:
find <dir> -ls | awk '{sum += $7} END {print sum}'
Пример:
$ du -s -B 1
255729664
$ find . -ls | awk '{sum += $7} END {print sum}'
249008169
Только для размера каталога в читаемом формате используйте следующее:
du -hs directoryname
Это, вероятно, не в правильном разделе, но из командной строки вы можете попробовать:
ls -sh filename
-s
- это размер, а -h
доступен для человека.
Используйте -l
для отображения в списке ls
, как показано ниже:
ls -shl
du /foldername
- стандартная команда для определения размера папки. Лучше всего найти параметры, прочитав справочную страницу:
man du
Перед использованием команды вы должны прочитать справочную страницу (доступную онлайн ).
Вот сценарий POSIX, который будет работать с:
- Файл
- Файлы
- Каталог
- Каталоги
#!/bin/sh
ls -ARgo "[email protected]" | awk '{q += $3} END {print q}'
Лучше всего я считаю следующее:
du -h directory_name | tail -n1
Это покажет вам только размер интересующей вас директории и не будет печатать размеры любых каталогов и файлов внутри этого каталога.
Я должен добавить, что если размер папки большой, то du занимает больше времени. Вы должны быть терпеливыми, чтобы эта команда работала. Как и любая другая команда unix, вы можете узнать общее время для этого процесса, используя time
перед этой командой:
time du -h directory_name | tail -n1