Як рекурсивно знайти суму, що зберігається в каталозі?


136

Я знаю, що ви можете бачити розмір байта файлу, коли ви робите довгий список з llабо ls -l. Але я хочу знати, скільки пам’яті зберігається в каталозі, включаючи файли в цьому каталозі та підкаталоги, що знаходяться там, тощо. Я не хочу кількість файлів, а натомість обсяг пам’яті цих файлів займає.

Отже, я хочу знати, скільки зберігається в певному каталозі рекурсивно? Я здогадуюсь, якщо є команда, що це було б у байтах.

Відповіді:


146

Спробуйте зробити це:

du -s dir

або

du -sh dir

потребує -hпідтримки, залежить від вашої ОС.

Побачити

man du

2
додати -bдо виводу в байтах
pcnate

4
--всім перелік усіх файлів і -h показує розмір файлу у
читаному

29

Ви просто робите:

du -sh /path/to/directory

де -sдля підсумків та -hдля людини, що читаються ( нестандартний варіант).

Будьте обережні , однак, в відміну ls, це НЕ покаже вам розмір файлу , але використання диска (тобто кратний файлової системи розмір блоку), але файл може бути менше, або навіть більше, так що ви можете використовувати --apparent-sizeопцію:

du -sh --apparent-size /path/to/directory

Це розмір, який би передавався по мережі, якби вам довелося.

Дійсно, у файлі можуть бути "дірки" (порожня оболонка), вони можуть бути меншими за розмір блоку файлової системи, можуть стискатися на рівні файлової системи тощо. Це пояснює це сторінка .

Як Ніклас вказує , ви можете також використовувати ncduаналізатор використання диска. Запущений зсередини каталогу він покаже вам, які папки та файли використовують дисковий простір, упорядкувавши їх від великого до найменшого.

Ви також можете побачити це питання .


19

Зауважте, що якщо ви хочете знати всі {sub} розміри папок всередині каталогу, ви також можете скористатись -dабо --max-depthпараметром du(який бере аргумент: рекурсивний ліміт)

Наприклад :

du -h /path/to/directory -d 1

Покаже вам щось подібне

4.0K /path/to/directory/folder1
16M  /path/to/directory/folder2
2.4G /path/to/directory/folder3
68M  /path/to/directory/folder4
8G   /path/to/directory/folder5

PS: Введення 0в якості рекурсивної межі еквівалентно -sопції. Ці 2 команди дадуть вам такий же результат (ваш заданий каталог рекурсивний розмір, прочитаний людиною):

du -h /path/to/directory -d 0
du -sh /path/to/directory

-d 1потрібно бути до шляху до каталогу
Abhinav Singi

Потреби? Це працює для мене після шляху до каталогу, на ubuntu / debian. Хоча приємніше мати це раніше, я згоден
Фло Шильд

14

Альтернативою вже згаданій duкоманді було б ncduприємний аналізатор використання диска для використання в терміналі. Можливо, вам потрібно буде встановити його спочатку, але він доступний у більшості сховищ пакетів.

Редагувати: Для вихідного формату дивіться ці скріншоти http://dev.yorhel.nl/ncdu/scr


Чудо! Завдяки цьому я бачу, які папки, які містять великий обсяг дискового розміру. Я навіть знайшов усі мої файли, які загадково зникли. Прекрасний інструмент це.
Фарон

11

Це дасть вам список розмірів із поточного каталогу, включаючи папки (рекурсивні) та файли.

$ du -hs *
7.5M    Applications
9.7M    Desktop
 85M    Documents
 16K    Downloads
 12G    Google Drive
 52G    Library
342M    Movies
8.3M    Music
780M    Pictures
8.5G    Projects
8.0K    Public
 16K    client1.txt

3
замовити за розміром: du -hs * | сортувати -hs
Кайзер

3

У Unix каталог просто містить імена та посилання на об’єкти файлової системи (inodes, які можуть посилатися на каталоги, файли чи якісь інші екзотичні речі). Файл може відображатися під кількома іменами в одному каталозі або бути переліченим у кількох каталогах. Тож "простір, який використовується каталогом та файлами всередині", справді не має сенсу, оскільки файли не "всередині".

З цього приводу команда du(1)перераховує простір, який використовує каталог, і все те, що доступно через нього, du -sдає підсумок, при цьому -hдеякі реалізації, такі як GNU, duдають "читабельний для людини" вихід (тобто кілобайт, мегабайт).


1

Для мене це спрацьовувало назад у випадку глибини та шляху в OS X El Capitán

du -h -d 1 /path/to/directory

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.