Як перелічити рекурсивні розміри файлів та каталогів у каталозі?


50

Як перерахувати всі файли в каталозі та їх рекурсивні розміри файлів?

--- редагувати

Я хочу бачити розміри "згорнуті" до батьківських каталогів у вказаному каталозі. Я не хочу бачити дочірні каталоги чи їхній вміст чи розміри.


1
Ви маєте на увазі, що ви хочете побачити загальний розмір (суму) всіх файлів у папці, як, наприклад, клацання правою кнопкою миші на папці на робочому столі та вибравши "властивості"?
— Павлос Г.

Ви шукаєте програмне забезпечення, яке допоможе вам знайти великі файли, або щось, щоб отримати (згортається) дерево файлів?
— Лекенштейн

Привіт @Pavlos G - Я маю на увазі суму для кожного з каталогів у каталозі, в якому я зараз перебуваю, - не суму для загального каталогу.
— hawkeye

@JG - Перевір моє оновлення ;-)
— Павлос Г.

Відповіді:


53

Напевно, найпростіший спосіб - це набравши текст ls -l, ls -lhякий надасть розмір файлу у читаному для людини форматі (KB, MB тощо).

Якщо "рекурсивно" означає перелік усіх наступних папок, наприклад:

/ foo /
/ foo / bar / ....

Тоді вам також слід додати параметр R, наприклад, ls -lRабоls -lhR

Більше інформації lsможна отримати, ввівшиman ls

Оновлення:

Наступна команда, запропонована Лекенштейнам, ймовірно, зробить цю роботу:

du -h --max-depth=1 <folder>

-hє для людини читабельним
--apparent-size- ще один спосіб відображення розмірів, як уже було зазначено,
--max-depth- це рівень підпапок, на які ви хочете зійти.


Що використовувати для максимальної глибини? -1?
— dylanh724

61
apt-get install ncdu

введіть тут опис зображення

Він також є інтерактивним, тому якщо ви хочете перевірити в підпапці просто Вгору, Вниз та Введіть до неї.


Тільки те, що я шукав. Дуже дякую!
— Mathlight

Можливо, найдивовижніша рекомендація щодо програмного забезпечення, яку я коли-небудь отримував
— SomethingSomething

це має бути затверджена відповідь
— dvdmn

30

Щоб отримати загальний розмір каталогу та всіх дітей

du -hs directory/*

Мені б хотілося, щоб наступний рівень був нижчим від цього - рекурсивні розміри всіх дітей першого рівня.
— hawkeye

1
Я відредагую свою відповідь. Вам потрібно скористатися каталогом du -h / *
— Річард Холлоуей

17

Також перевірити tree. Він не встановлений за замовчуванням, але є сховищами.

Приклад:

richard@legend:~$ tree Applications/ -s
Applications/
├── [           4096]  AlexFTPS-1.0.2
│   ├── [      31232]  AlexPilotti.FTPS.Client.dll
│   ├── [     274432]  C5.dll
│   ├── [       1457]  C5-License
│   ├── [      35147]  COPYING
│   ├── [       7639]  COPYING.LESSER
│   ├── [         70]  ftps
│   ├── [      28672]  ftps.exe
│   ├── [      98304]  Plossum CommandLine.dll
│   ├── [       1557]  Plossum-License
│   └── [       2560]  README
└── [           4096]  src
    └── [     180849]  AlexFTPS_bin_1.0.2.zip

Більше варіантів можна знайти на сторінці man.


Чи слід показувати розміри?
— hawkeye

JG: -s показує розміри.
— Річард Холлоуей

1
Показує розмір запису каталогу, а не повний розмір каталогу.
— Стівен Лу

-hпоказати розмір, зрозумілий для людини, наприкладtree -s
— Eric Wang

15

Оскільки ви конкретно не згадуєте, що вам потрібне рішення на базі терміналу, я думаю, що у списку відсутній baobab aka Disk Usage Analyzer.

Він встановлений в Ubuntu за замовчуванням і робить саме те, що ви хочете, в хорошому графічному інтерфейсі з можливістю розгортати ієрархію каталогів.

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

baobab Аналізатор використання диска


7

Термінал рішенням є duкомандою:

du --all --human-readable --apparent-size

(Скорочене: du -ah --apparent-size)

duвідображає використання диска для кожного файлу та каталогу. Пояснені варіанти:

  • --all, -a- показувати також розміри файлів, а не лише каталогів
  • --human-readable, -h- показувати розміри у читаному для людини форматі, наприклад 10K(10 кілобайт), 10(10 байт)
  • --apparent-size - показувати фактичний розмір файлу, а не розміри, які використовує диск.

Я просто хотів дітей першого рівня
— хокі

2
@hawkeye для 1-го рівня ви можете використовувати--max-depth=1
— nikoskip

4
@nikoskip приємна порада! Також приємно знати, що це скорочення, яке --max-depth=1можна скоротити -d1.
— Лекенштейн

як отримати все це в порядку
— обману

як я переглядаю вміст і порожній: / dev / sda5 ext4 430G 381G 27G 94% / мій ноутбук менше 1 місяця, і він настільки повний, що немає сенсу
— kRazzy R

2

Це, здається, робить трюк, коли задіяні спрощені посилання.

ls -LRlh

Дана відповідь не дала мені деталей для simlinks (ls -lhR), цифри, перелічені поруч, не відповідали правильному розміру кожного зі значень. Моя відповідь дала мені ієрархію із визначеною структурою дерева та правильною відповіддю .... АЛЕ ви посилаєтесь на якусь іншу схвалену відповідь?
— Мулькі

Відкликання голосів відкликане, відкликане. Будь ласка, відредагуйте та поставте коментар у відповідь ... Дякую за пояснення. ;-)
— Fabby

1

Щоб отримати відсортований список, покладіть все у МБ та відсортуйте:

du -m * | sort -n

Або скористайтеся інструментом, таким як DiskReport, для створення звіту про повне дерево диска.


1

Ще одне термінальне рішення з findта сортування (за розміром файлів, стовпець 1)

$ find . -maxdepth 1 ! -path . -printf "%s %p\n" | sort -n -k1                              
178 ./somefile.txt
219 ./somefile2.txt
4096 ./c
4096 ./cs2
4096 ./perl
4096 ./python
4096 ./random
4096 ./sh

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