Відобразити кожен розмір підкаталогу у форматі списку за допомогою однієї рядкової команди в Bash?


100

Я хочу отримати список каталогів та їх розміри у форматі списку, як, як ви отримуєте, коли ви робите ls -l.

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

Яка команда може це зробити, або комбінація команд, яку можна легко набрати? du -hдає, але він відображає всі підпапки, які не є тим, що я хочу. лише поточні папки каталогів.

Відповіді:


71

Можливо, ви хочете побачити каталоги, упорядковані за розміром:

$ du -hs * | sort -hr

856M    lib
746M    share
612M    lib64
312M    src
267M    java
239M    bin
179M    sbin
173M    local
93M     i686-w64-mingw32
72M     libexec
26M     include
20M     puppet
772K    X11R6
20K     man
4.0K    games
4.0K    etc
0       tmp

Це не працює, якщо в каталозі є велика кількість записів. bash: /run/current-system/sw/bin/du: Argument list too long
Кріс Стричинський

123

Спробуйте це

du -h --max-depth=1

Вихідні дані

oliver@home:/usr$ sudo du -h --max-depth=1
24M     ./include
20M     ./sbin
228M    ./local
4.0K    ./src
520M    ./lib
8.0K    ./games
1.3G    ./share
255M    ./bin
2.4G    .

Альтернатива

Якщо --max-depth=1ваш смак трохи задовгий, ви також можете спробувати скористатися:

du -h -s *

Це використовує -s( --summarize) і друкує лише розмір самої папки за замовчуванням. Передаючи всі елементи в поточному робочому каталозі ( *), він видає подібний вихід, як --max-depth=1і:

Вихідні дані

oliver@cloud:/usr$ sudo du -h -s *
255M    bin
8.0K    games
24M     include
520M    lib
0       lib64
228M    local
20M     sbin
1.3G    share
4.0K    src

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

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


4
Ідеальна відповідь. На Mac OSX --depthпараметр не розпізнається. Використовуйте du -h -d 1для того ж результату.
Ділан


2

Варто згадати команду оболонки NCurses Disk Usage .

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

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