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


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.