2010-07-11 17:26:29 +0000 2010-07-11 17:26:29 +0000
316
316

Как получить суммарный размер каталогов и их подкаталогов?

Допустим, я хочу получить размер каждого каталога файловой системы Linux. Когда я использую ls -la, я не получаю суммарный размер папок.

Если я использую df, я получаю размер каждой смонтированной файловой системы, но это также не помогает мне. А с du я получаю размер каждого подкаталога и сводку всей файловой системы.

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

Ответы (9)

450
450
450
2010-07-11 17:28:23 +0000

Это делает то, что вы ищете:

du -sh /*

Что это значит:

  • -s, чтобы дать только общую сумму для каждого аргумента командной строки.
  • -h для человекочитаемых суффиксов, таких как M для мегабайт и G для гигабайт (опционально).
  • /* просто распространяется на все каталоги (и файлы) в /.

Также полезно сортировка по размеру:

du -sh /* | sort -h

Здесь:

  • -h гарантирует, что sort интерпретирует человекочитаемые суффиксы правильно.
84
84
84
2010-07-29 12:07:31 +0000

Мне часто нужно найти самые большие каталоги, поэтому, чтобы получить отсортированный список, содержащий 20 самых больших каталогов, я делаю это:

du -m /some/path | sort -nr | head -n 20

В этом случае размеры будут сообщаться в мегабайтах.

24
24
24
2015-12-24 10:07:52 +0000

Я люблю использовать Ncdu для этого, вы можете использовать курсор для навигации и детализации по структуре каталога он работает действительно хорошо.

12
12
12
2012-11-22 16:53:04 +0000

Существующие ответы очень полезны, может быть, какой-нибудь новичок (как я) тоже найдет это полезным.

  1. Очень простой цикл, но для меня это было хорошим началом для некоторых других операций, связанных с размером:

  2. Очень похоже на первый ответ и почти такой же результат, как 1.), но мне потребовалось некоторое время, чтобы понять разницу * и ./*, если в подкаталоге:

9
9
9
2010-07-11 17:29:10 +0000

В системах BSD должны работать следующие вызовы du:

du -d 1 /
5
5
5
2015-07-24 11:04:13 +0000

Это нелегко. Команда du либо показывает файлы и папки (по умолчанию), либо просто размеры всех элементов, которые вы указываете в командной строке (опция -s).

Чтобы получить самые большие элементы (файлы и папки), отсортированные, с читаемыми человеком размерами в Linux:

du -h | sort -h

Это похоронит вас в тонне маленьких файлов. Вы можете избавиться от них с помощью --threshold (1 MB в моем примере):

du --threshold=1M -h | sort -h

Преимущество этой команды в том, что она включает в себя скрытые папки с точками (папки, которые начинаются с .).

Если вам действительно нужны только папки, вам нужно использовать find, но это может быть очень, очень медленно, так как du придется сканировать много папок несколько раз:

find . -type d -print0 | sort -z | xargs --null -I '{}' du -sh '{}' | sort -h
2
2
2
2013-10-05 15:36:58 +0000

Имейте в виду, что нельзя сравнивать каталоги с du на разных системах/машинах, не удостоверившись, что обе они имеют одинаковый размер файловой системы. Это может засчитаться, если вы rsync-компьютер с Linux на nas и хотите сравнить синхронизированный каталог самостоятельно. Вы можете получить разные результаты с du из-за разного размера блоков……

1
1
1
2010-07-12 19:42:17 +0000

Возможно, вы также захотите проверить xdiskusage . Предоставит вам ту же информацию, но с графическим изображением, плюс позволит уточнить (очень полезно). Есть и другие подобные утилиты для KDE и даже для Windows.

1
1
1
2016-12-20 09:56:34 +0000

Вы можете использовать ls в сочетании с awk:

ls -al * | awk 'BEGIN {tot=0;} {tot = tot + $5;} END {printf ("%.2fMb\n",tot/1024/1024);}'

. ls начинает обработку данных. Стандартным разделителем является пробел. Переменная суммы awk инициализируется равным нулю; для каждой строки/линии, выводимой с помощью awk, выполняется следующий оператор. Она просто увеличивает tot на размер. ls означает пятый столбец (выводится tot). В конце мы делим (1024*1024) на сумму в мегабайтах.

Если вы хотите преобразовать это в скрипт или функцию (.bashrc), вы также можете использовать это, чтобы получить размер определенных подмножеств каталогов, в соответствии с типами файлов.

Если вы хотите получить информацию о системе в целом, $5 может пригодиться!

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

6
10
5
37
9