Существует ли простая команда для отображения общего совокупного размера (использование диска) всех файлов в каталоге (папка)?
Я попробовал их, и они не делают то, что я хочу:
ls -l
, который только отображает размер отдельных файлов в каталоге, ни df -h
, который только отображает свободное и использованное пространство на моих дисках.Это находит размер рекурсивно и помещает его рядом с каждым именем папки, вместе с общим размером внизу, все в человеческом формате
du -hsc *
Ниже приведено то, что я использую для печати общего размера, папки и размера файла:
$ 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
tree
- еще одна полезная команда для этого задания:
Просто установите его через sudo apt-get install tree
и введите следующее:
tree --du -h /path/to/directory
...
...
33.7M used in 0 directories, 25 files
Из man tree :
-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 /foldername
- это стандартная команда для определения размера папки. Лучше всего найти варианты, прочитав страницу руководства:
man du
Вы должны прочитать страницу руководства (доступно онлайн ), прежде чем использовать команду.
Вот скрипт POSIX, который будет работать с:
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'
Ответы сделали очевидным, что 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
Если в вашем нужном каталоге много подкаталогов, используйте следующее:
$ cd ~/your/target/directory
$ du -csh
-c, --total выведите общее количество
blockquote>
-s, - -summarize отображать только итоговые значения для каждого аргумента
-h, - читаемые человеком размеры печати в удобочитаемом формате (например, 1K 234M 2G), что приведет общий объем использования памяти всеми файлами / папками в текущем каталоге.
Только для размера каталога в удобочитаемом формате используйте следующее:
du -hs directoryname
Возможно, это не в том разделе, но из командной строки вы можете попробовать:
[ 111] -s
- это размер, а -h
удобочитаем.
Используйте -l
для отображения в списке ls
, как показано ниже:
ls -shl
Лучшим, на мой взгляд, является следующее:
du -h directory_name | tail -n1
Это покажет вам только размер каталога, который вас интересует, и не будет печатать размеры каких-либо каталогов и файлов внутри этого каталога.
Я должен добавить, что если размер папки большой, то du занимает больше времени. Вы должны быть терпеливы, чтобы эта команда сработала. Как и любая другая команда unix, вы можете узнать общее время этого процесса, используя time
перед этой командой:
time du -h directory_name | tail -n1
Команда du
«суммирует использование диском каждого ФАЙЛА, рекурсивно для каталогов», например,
du -hs /path/to/directory
-h
, чтобы получить числа, «читаемые человеком», например, получить 140M
вместо 143260
(размер в килобайтах) -s
для сводки (в противном случае вы получите не только размер папки, но и все для в папка отдельно) Поскольку вы используете -h
, вы можете сортировать удобочитаемые значения, используя
du -h | sort -h
Флаг -h
на sort
будет учитывать «Размер для чтения человеком».
Если вы хотите избежать рекурсивного перечисления всех файлов и каталогов, вы можете указать параметр --max-depth
, чтобы ограничить количество отображаемых элементов. Чаще всего, --max-depth=1
du -h --max-depth=1 /path/to/directory
Недавно я нашел отличный интерактивный инструмент на основе ncurses, который быстро дает вам представление о размерах каталогов. В течение многих лет искал такой инструмент.
Думайте об этом как баобаб для командной строки:
apt-get install ncdu