%20%D0%B8%D0%B7%D0%BC%D0%B5%D1%80%D0%B8%D1%82%D1%8C%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%D1%8B%20%D0%B2%D1%81%D0%B5%D1%85%20(%D0%BA%D0%B0%D0%BA%20%D1%81%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85%2C%20%D1%82%D0%B0%D0%BA%20%D0%B8%20%D0%BD%D0%B5%20%D1%81%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D1%85)%20%D0%BF%D0%B0%D0%BF%D0%BE%D0%BA%20%D0%B2%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B5%3F.png)
У меня есть родительский каталог, somedir
содержащий два дочерних каталога .hiddenDir
и notHidden
.
Я хочу нерекурсивно измерить размерывседочерние каталоги в somedir
.
Как это сделать в Unix?
Изображение того, что я хочу:
неудачная попытка:
Следующая du
команда возвращает только видимые каталоги:
du -sh *
Пока
du -sh .*
возвращает только скрытые каталоги.
Как я могу вернуть размерывсекаталоги как на картинке?
решение1
С GNU du
:
du -hd1
(он также сообщает об использовании диска, .
которое будет суммой использования диска, указанного для подкаталогов, и использования диска для файлов, не являющихся каталогами, в текущем каталоге).
С zsh
и любым du
:
du -sk -- *(/D)
(в кибибайтах).
В любом случае, хотя это не сообщает об использовании диска каталогами на глубине 2
или ниже и их содержимом, использование диска этими каталогами все равно включено в использование диска, сообщаемое для каталогов верхнего уровня (другими словами, естьявляетсярекурсия).
Это одно из потенциальных значенийразмеркаталога. Другими словами, это дисковое пространство, которое будет освобождено, если этот каталог и его содержимое будут удалены (предполагая, что файлы не имеют жестких ссылок за пределами этих каталогов, и что на их данные не ссылаются (возможно, частично) другие файлы за пределами этих каталогов), обратите внимание, что это, как правило, отличается от суммы видимых размеров самих файлов (включая файлы каталогов), как сообщает ls -l
.
решение2
Du принимает несколько аргументов - на самом деле * раскрываются вашей оболочкой, прежде чем они будут переданы du. Так что это все, что вам нужно сделать.
du -sh * .??*
Будьте осторожны: при этом будут пропущены файлы или каталоги, имена которых содержат .
один символ, например, каталог с именем .a
.
.??*
используется для пропуска .
и ..
, которые связывают текущий и родительский каталоги.