Допустим, я хочу получить размер каждого каталога файловой системы Linux. Когда я использую, ls -la
я не получаю суммарный размер папок.
Если я использую, df
я получаю размер каждой смонтированной файловой системы, но это также не помогает мне. И du
я получаю размер каждого подкаталога и сводку всей файловой системы.
Но я хочу иметь только суммарный размер каждого каталога в папке ROOT файловой системы. Есть ли команда для этого?
--total
Флаг был полезен для меня. Напримерdu -sh --total applications/*
. askubuntu.com/a/465436/48214Ответы:
Это делает то, что вы ищете:
Что это значит:
-s
дать только сумму для каждого аргумента командной строки.-h
для удобочитаемых суффиксов, таких какM
мегабайты иG
гигабайты (необязательно)./*
просто расширяется на все каталоги (и файлы) в/
.Примечание: точечные файлы не включены; бежать,
shopt -s dotglob
чтобы включить их тоже.Также полезна сортировка по размеру:
Вот:
-h
гарантирует, чтоsort
интерпретирует удобочитаемые суффиксы правильно.источник
shopt -s dotglob
для включения в счетчик./*
, например,./
для текущего каталога или./*
для каждого элемента в текущем каталоге../*/
чтобы получить только подпапки, а не все элементыdu -sh /* | sort -h
sort
его нет-h
, вам также нужно отключить егоdu
, иначе сортировка будет смешивать килограммы / мега / гигабайты.du -s /* | sort -nr
,Мне часто нужно найти самые большие каталоги, поэтому, чтобы получить отсортированный список, содержащий 20 самых больших каталогов, я делаю это:
В этом случае размеры будут сообщаться в мегабайтах.
источник
Мне нравится использовать Ncdu для этого, вы можете использовать курсор для навигации и просмотра структуры каталогов, это работает очень хорошо.
источник
b
чтобы зайти в оболочку в каталоге.Существующие ответы очень полезны, может быть, некоторые новички (такие как я) тоже найдут это полезным.
Очень простой цикл, но для меня это было хорошее начало для некоторых других операций, связанных с размером:
Очень похоже на первый ответ и почти тот же результат, что и 1.), но мне потребовалось некоторое время, чтобы понять разницу от * до ./* в подкаталоге:
источник
for each
не работает, так как добавляет символы консоли (например\033[
) в список папокfor each
. это не будет работатьСледующий
du
вызов должен работать в системах BSD:источник
du
(Ubuntu 10.4) не имеет-d
опции. На какой ты системе?du -sk /*
. Я ненавижу такие-k
вещи, оооочень много. Линукс-h
полностью рушится.--max-depth
Это не легко Команда
du
либо показывает файлы и папки (по умолчанию), либо только размеры всех элементов, которые вы указываете в командной строке (опция-s
).Чтобы получить самые большие элементы (файлы и папки), отсортированные, с удобочитаемыми размерами в Linux:
Это похоронит вас в кучу маленьких файлов. Вы можете избавиться от них с помощью
--threshold
(1 МБ в моем примере):Преимущество этой команды в том, что она включает в себя скрытые точки (папки, которые начинаются с
.
).Если вы действительно просто хотите, чтобы папки, вам нужно использовать,
find
но это может быть очень, очень медленно, такdu
как придется сканировать много папок несколько раз:источник
Имейте в виду, что вы не можете сравнивать каталоги
du
на разных системах / машинах, не будучи уверенными, что оба разделяют один и тот же размер блока файловой системы. Это может иметь значение, если вы пересылаете некоторые файлы с Linux-машины на NAS и хотите сравнить синхронизированный каталог самостоятельно. Вы можете получить разные результатыdu
из-за разных размеров блоков ....источник
Вы также можете проверить xdiskusage . Предоставит вам ту же информацию, но показанную графически, плюс позволит развернуть (очень полезно). Есть и другие подобные утилиты для KDE и даже Windows.
источник
Вы можете использовать
ls
в сочетании сawk
:Вывод по
ls
конвейеруawk
.awk
начинает обработку данных. Стандартным разделителем является пробел. Переменная суммыtot
инициализируется нулем; следующий оператор выполняется для каждой строки / строки, выводимойls
. Это просто увеличиваетсяtot
с размером.$5
обозначает пятый столбец (выводитсяls
). В конце мы делим на (1024 * 1024) сумму в мегабайтах.Если вы захотите преобразовать это в скрипт или функцию (.bashrc), вы также можете использовать его для получения размера определенных подмножеств каталогов в соответствии с типами файлов.
Если вам нужна общесистемная информация,
kdirstat
может пригодиться!источник