Вопрос: Как определить общий размер каталога (папки) из командной строки?


Есть ли простая команда для отображения общего размера совокупности (использования диска) всех файлов в каталоге (папке)?

Я пробовал это, и они не делают то, что я хочу:

  • ls -l, который отображает только размер отдельных файлов в каталоге, а также
  • df -h, который отображает только свободное и используемое пространство на моих дисках.

677
2017-08-05 18:20


Источник


Связанный: Как указать рекурсивные размеры файлов и каталогов в каталоге? - Peter Mortensen
Межсайтовый дубликат: Как получить размер каталога в командной строке? - Peter Mortensen


Ответы:


Команда du «суммирует использование диска каждого FILE, рекурсивно для каталогов», например,

du -hs /path/to/directory
  • -h состоит в том, чтобы получить числа «читаемые человеком», например. получить 140M вместо 143260 (размер в килобайтах)
  • -s для резюме (в противном случае вы получите не только размер папки, но и все в папка отдельно)

Поскольку вы используете -h вы можете сортировать человекочитаемые значения, используя

du -sh | sort -h

-h флаг на sort будет учитывать значения размера «Человеческие читаемые».


Если вы хотите избежать рекурсивного перечисления всех файлов и каталогов, вы можете предоставить --max-depth чтобы ограничить количество отображаемых элементов. Наиболее часто, --max-depth=1

du -sh --max-depth=1 /path/to/directory

1071
2017-08-05 18:27



уважение к тому, чтобы пройти лишнюю милю. :) - myusuf3
я использую du -sh или DOOSH в качестве способа его запоминания (ПРИМЕЧАНИЕ: команда такая же, просто организация флагов командной строки для целей памяти) - Marco Ceppi♦
Существует полезная опция для du, называемая -apparent-size. Его можно использовать для определения фактического размера файла или каталога (в отличие от его отпечатка на диске), например, текстовый файл с 4 символами будет занимать около 6 байтов, но все равно будет отображаться как взятие ~ 4K в регулярный вывод du -sh. Тем не менее, если вы передадите опцию --apparent-size, выход будет равен 6. man du говорит: - размер шрифта, размер которого зависит от размера, а не от использования диска; хотя кажущийся размер обычно меньше, он может быть больше из-за отверстий в («разреженных») файлах, внутренней фрагментации, косвенных блоков - Hopping Bunny
Это работает и для OS X! Спасибо, я действительно искал способ очистки файлов, как на моей локальной машине, так и на моем сервере, но автоматические методы, похоже, не сработали. Итак, я побежал du -hs * и зашел в самый большой каталог и выяснил, какие файлы были такими большими ... Это такой хороший метод, и лучше всего вам ничего не нужно устанавливать! Определенно заслужил мою возвышенность - Dev
@BandaMuhammadAlHelal Я думаю, что есть две причины: округление (du имеет несколько своеобразное округление, не показывающее десятичных знаков, если значение имеет более одной цифры в выбранном модуле), а классический Префикс 1024 против 1000 вопрос. du имеет возможность -B (или --block-size), чтобы изменить единицы измерения, в которых он отображает значения, или вы можете использовать -b вместо -h для получения «необработанного» значения в байтах. - Marcel Stimberg


Недавно я нашел отличный интерактивный инструмент, основанный на ncurses, который быстро дает вам обзор размеров каталогов. Искал этот инструмент в течение многих лет.

  • быстро развернуть по иерархии файлов
  • вы можете удалить, например. огромные временные файлы изнутри инструмента
  • очень быстро

Подумайте об этом как о баобаб для командной строки:

apt-get install ncdu

138
2017-10-11 07:24



Это абсолютно фантастично! Как DaisyDisk, для OSX - subZero
Невероятный инструмент! - Ted
ncdu это превосходно! После его установки просто сделайте это ncdu /, Вы очень быстро найдете самые большие файлы в системе. Также нажмите h в то время как внутри консольного интерфейса ncdu. Он имеет очень полезные ярлыки - vlad-ardelean
Удивительный инструмент! Спасибо за головы! - kstratis


Это находит рекурсивный размер и помещает его рядом с именем каждой папки вместе с общим размером внизу, все в человеческом формате

du -hsc *

41
2017-12-19 16:32





Наслаждайтесь!

du foldername

Дополнительная информация об этой команде Вот 


14
2017-08-05 18:22





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.)

7
2018-01-27 12:37





Ниже приводится то, что я использую, чтобы распечатать общий объем, папку и размер файла:

$ 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

5
2017-10-06 14:05





В ответах было очевидно, что 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

3
2018-02-04 18:56



Find-ls-awk вернет неправильное значение для больших папок # 1, Для новых awk вы можете добавить --bignum или -M ; если это не вариант использования find . -ls | tr -s ' '|cut -d' ' -f 7| paste -sd+ |bc  # 2, - goozez
Если используются полномочия 2, то есть --si option: "like -h, но использовать полномочия 1000 не 1024" - muru


Только размер каталога в читаемом формате используется ниже:

du -hs directoryname

Это, вероятно, не в правильном разделе, но из командной строки вы можете попробовать:

ls -sh filename

-sэто размер, а -h читается человеком.

использование -l показать на ls список, как показано ниже:

ls -shl

1
2018-05-12 09:09