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

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

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

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

11 ответов


1062

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

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

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

du -sh | sort -h

Флаг -h в sort будет учитывать значения размера «Human Readable».


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

du -sh --max-depth=1 /path/to/directory
ответил Marcel Stimberg 5 PM000000100000003531 2010, 22:27:35
137

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

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

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

apt-get install ncdu
ответил geekQ 11 +04002012-10-11T11:24:38+04:00312012bEurope/MoscowThu, 11 Oct 2012 11:24:38 +0400 2012, 11:24:38
40

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

du -hsc *
ответил Brad 19 FriEurope/Moscow2014-12-19T19:32:21+03:00Europe/Moscow12bEurope/MoscowFri, 19 Dec 2014 19:32:21 +0300 2014, 19:32:21
14

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

du foldername

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

ответил myusuf3 5 PM000000100000005331 2010, 22:22:53
7

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 Jpm1000000pmTue, 27 Jan 2015 15:37:49 +030015 2015, 15:37:49
5

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

$ 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 6 +03002016-10-06T17:05:49+03:00312016bEurope/MoscowThu, 06 Oct 2016 17:05:49 +0300 2016, 17:05:49
3

В ответах было очевидно, что 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
ответил pdp 4 FebruaryEurope/MoscowbThu, 04 Feb 2016 21:56:45 +0300000000pmThu, 04 Feb 2016 21:56:45 +030016 2016, 21:56:45
1

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

du -hs directoryname

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

ls -sh filename

-s - это размер, а -h доступен для человека.

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

ls -shl
ответил Shiv Singh 12 Maypm16 2016, 12:09:20
0

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

man du

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

ответил Balaswamy vaddeman 5 MonEurope/Moscow2011-12-05T13:17:33+04:00Europe/Moscow12bEurope/MoscowMon, 05 Dec 2011 13:17:33 +0400 2011, 13:17:33
0

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

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

Источник

ответил Steven Penny 27 MarpmMon, 27 Mar 2017 14:48:15 +03002017-03-27T14:48:15+03:0002 2017, 14:48:15
-2

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

du -h directory_name | tail -n1

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

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

time du -h directory_name | tail -n1
ответил Peaceful 19 FriEurope/Moscow2014-12-19T09:35:28+03:00Europe/Moscow12bEurope/MoscowFri, 19 Dec 2014 09:35:28 +0300 2014, 09:35:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132