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

627

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

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

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

11 ответов

983

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

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

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

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

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

apt-get install ncdu
    
ответ дан geekQ 11.10.2012 в 09:24
38

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

du -hsc *
    
ответ дан Brad 19.12.2014 в 17:32
14

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

du foldername

Подробнее об этой команде здесь

    
ответ дан myusuf3 05.08.2010 в 20:22
6

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.)
    
ответ дан αғsнιη 27.01.2015 в 13:37
4

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

$ 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
    
ответ дан vivekyad4v 06.10.2016 в 16:05
3

В ответах было очевидно, что du - это инструмент для поиска общего размера каталога. Однако есть несколько факторов, которые следует учитывать:

  • Иногда вывод du может вводить в заблуждение, поскольку он сообщает пространство, выделенное файловой системой, которое может отличаться от суммы размеров отдельных файлов. Обычно файловая система будет выделять 4096 байт для файла, даже если вы сохранили в нем только один символ!

  • Разница в выходе из-за мощности 2 и мощности 10 единиц. Переключатель -h на du делит количество байтов на 2 ^ 10 (1024), 2 ^ 20 (1048576) и т. Д., Чтобы дать читаемый пользователем результат. Многие люди могут быть более привыкли видеть силу 10 (например, 1K = 1000, 1M = 1000000) и быть удивлены результатом.

Чтобы найти общую сумму размеров всех файлов в каталоге, в байтах, выполните:

find <dir> -ls | awk '{sum += } END {print sum}'

Пример:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += } END {print sum}'
249008169
    
ответ дан pdp 04.02.2016 в 19:56
1

Только для размера каталога в читаемом формате используйте следующее:

du -hs directoryname

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

ls -sh filename

Размер -s - это размер, а -h - читаемый человеком.

Используйте -l для отображения в списке ls , как показано ниже:

ls -shl
    
ответ дан Shiv Singh 12.05.2016 в 11:09
0

du /foldername - стандартная команда для определения размера папки. Лучше всего найти параметры, прочитав справочную страницу:

man du

Перед использованием этой команды вы должны прочитать справочную страницу (доступную онлайн ).

    
ответ дан Balaswamy vaddeman 05.12.2011 в 10:17
0

Вот сценарий POSIX, который будет работать с:

  • Файл
  • Файлы
  • Каталог
  • Каталоги
#!/bin/sh
ls -ARgo "[email protected]" | awk '{q += } END {print q}'

Источник

    
ответ дан Steven Penny 27.03.2017 в 13:48
-2

Лучше всего я считаю следующее:

du -h directory_name | tail -n1

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

Я должен добавить, что если размер папки большой, то du занимает больше времени. Вы должны быть терпеливыми, чтобы эта команда работала. Как и любая другая команда unix, вы можете узнать общее время для этого процесса, используя time перед этой командой:

time du -h directory_name | tail -n1
    
ответ дан Peaceful 19.12.2014 в 07:35