команда du не розбирає приховані каталоги


25

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

du -sh dir_name

який не обчислює приховані каталоги. На сторінці людини du немає інформації про це. Як обчислити обсяг дискового простору, який використовується каталогами, включаючи приховані файли.

Відповіді:


13

Насправді це так, ось доказ:

mkdir .test
echo "hi" > .test/appo
du -a
4       ./.test/appo
8       ./.test
12      .

-aОпція використовується явно показати , які файли були підраховані.

Ви використовуєте du *?


3
+1 за... you maybe using "du *" ?
вересень

2
Я не використовую "du *". Я забув зазначити у питанні, що мені потрібен загальний підсумок. тож якщо я використовую і -a і -s, як у du -as, я отримую повідомлення про помилку із записом "du: не можу як узагальнити, так і показати всі записи". Це одне питання. Інша справа, що я навіть з du -ai отримую лише файли першого рівня. тобто неможливо побачити файли всередині прихованих каталогів.
Talespin_Kit

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

1
Тепер я знайшов проблему. Проблема полягала в тому, що прихований каталог був символічним посиланням, тому мені довелося використовувати "du -Lsh dir_name". Спасибі.
Talespin_Kit

1
ах, бачу, рада, що ти знайшов це, ура.
stivlo

53

Ця команда показує узагальнений розмір прихованих каталогів

du -hs .[^.]*


1
Це саме те, що я шукав, дякую :)
Nikana Reklawyks

це правильне рішення
ст.

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

13

Правильна команда: du -hs $(ls -A)

$ du -hs $(ls -A)
0   test
0   .test

du -hs .* *, як було сказано в іншій відповіді, невірно, якщо ви хочете перерахувати всі файли та підкаталоги (включаючи приховані).

Приклад:

$ touch test
$ touch .test
$ echo *
test
$ echo .* *
. .. .test test
$ du -hs .* *
4,0K    .
1,8G    ..

Чому так duповодиться? Тому що ви використовуєте -sцей підсумок результату, і що всі файли та підкаталоги є дітьми, .тому du -hsне перераховує їх!


11

FYI, для оцінки розміру, який займають різні каталоги, набагато краще використовувати ncdu

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


1
Будь ласка, відредагуйте свою відповідь, щоб вказати, чому ви вважаєте, що ncdu "набагато краще". Пов'язана сторінка насправді нічого не говорить про неї, крім того, що це версія, заснована на ncurses du. Окрім методу вигадливішого відображення, очевидних ознак будь-якої функціональної різниці немає.
Дейв Шерохман

Я думаю, що можливість динамічно коригувати ваш запит - це величезна користь. Я можу запустити ncdu on ~, дізнатися, в яких каталогах використовується найбільше місця, а потім зануритися безпосередньо в них. Це також надає dобов'язковість видалення каталогів, так що ви можете очистити безпосередньо з інтерфейсу.
user88974

5

Це робить, і ні. Приклад:

У домашньому каталозі: (існує лише один користувач)

du -sh /home/*
2.6G    /home/user

в каталозі користувачів: (величезна різниця між сумами)

du -sh *
61M     bin
2.0M    dump-20130124104823.tar.gz
651M    public_html
472K    twitter-2.0.0.gem
11M     wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2

і причина:

du -sh /home/user/.rvm/
1.9G    /home/user/.rvm/

du буде обчислювати приховані каталоги під час спуску в підкаталоги, але в поточному каталозі * просто не відповідає малюнку .directory_name, тому поточні приховані елементи каталогів опущені.

На це мені знадобилося певний час, і як рекомендує шадябхі, було б очевидно, якби я використовував ncdu.



1

find -maxdepth 1 -exec du -sh "{}" \; | sort -h

Це дає вам:

  • Розмір прихованих файлів / каталогів
  • Розмір не прихованих файлів / каталогів
  • Великий загальний розмір поточного каталогу

Він також сортує вихід, щоб легко було зрозуміти, що найбільше. Я також зробив цей псевдонім у своєму ~/.bash_aliasesфайлі.

alias big='find -maxdepth 1 -exec du -sh "{}" \; | sort -h'
alias sbig='sudo find -maxdepth 1 -exec du -sh "{}" \; | sort -h'

Тепер я можу просто виконати, bigщоб знайти найбільші каталоги в каталозі, і sbigколи мені потрібні дозволи судо.


0
du -ahd1 | sort -hr | head -10

далі опис -dопції в du --help:

-d, --max-width = N вивести загальну кількість для каталогу (або файлу, з --all), лише якщо це N або менше рівнів нижче аргументу командного рядка; --max-width = 0 те саме, що --summarize


Хоча це може допомогти вирішити проблему, воно не пояснює, чому та / або як воно вирішує проблему. Забезпечення цього додаткового контексту значно покращило б його довгострокове навчальне значення. Будь ласка, відредагуйте свою відповідь, щоб додати пояснення, включаючи, які обмеження та припущення застосовуються. Спасибі.
fixer1234

0

Ця команда допоможе вам перевірити використання диска, потрапити в каталог і виконати наступне.
"du -sch. [!.] * * | сортувати -h"

Ось демонстрація того, як обчислити використання диска певного каталогу. Я створив каталог під назвою Du_sh і створив все два файли (один прихований 10 Мб і звичайний 20 Мб) всередині.

nikhil@debian:~$ mkdir Du_sh nikhil@debian:~$ cd Du_sh/ nikhil@debian:~/Du_sh$ dd if=/dev/zero of=.10MB bs=1024 count=10240 10240+0 records in 10240+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0.0299941 s, 350 MB/s nikhil@debian:~/Du_sh$ nikhil@debian:~/Du_sh$ dd if=/dev/zero of=20MB bs=2048 count=10240 10240+0 records in 10240+0 records out 20971520 bytes (21 MB, 20 MiB) copied, 0.0342258 s, 613 MB/s nikhil@debian:~/Du_sh$ du -sch .[!.]* * 10M .10MB 20M 20MB 30M total nikhil@debian:~/Du_sh$ du -sch .[!.]* * | sort -h 10M .10MB 20M 20MB 30M total nikhil@debian:~/Du_sh$

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