Чому це не відображає приховані файли / папки?


139

Я переглядав свою систему, du -sch ./*щоб знайти великі непотрібні файли, які я, можливо, склав без причини, коли знайшов це:

$ du -sch ./*
du: cannot read directory ‘./drbunsen/.gvfs’: Permission denied
du: cannot read directory ‘./drbunsen/.cache/dconf’: Permission denied
18G ./drbunsen
18G total

$ cd drbunsen/
$ du -sch ./*
601M ./Desktop
20K ./Documents
598M ./Downloads
4.0K ./flash
4.0K ./Music
8.0M ./Pictures
4.0K ./Public
4.0K ./Templates
4.0K ./Ubuntu One
8.0K ./Videos
11G ./VirtualBox VMs
6.9M ./workspace
12G total

Як зробити приховані файли видимими? du -sch ./.*дає такий же результат, як і du -sch ./*.


du -hs .[^.]* *для всіх прихованих файлів, крім яких .і ..інших відповідей, здається, відсутні.
laggingreflex

Відповіді:


245

Використовуйте

du -sch .[!.]* * |sort -h

у вашій домашній папці.

Крім того, команда, яку я найчастіше використовую, - це

ncdu

Простий в установці при необхідності:

sudo apt-get install ncdu

1
Спасибі, ви геній. Я не майстер в баш, що робити [!.]?
Dr_Bunsen

10
@Dr_Bunsen: це глобус, який перераховує всі файли, які починаються з одного .. Ось акуратний трюк: якщо ви не знаєте, що робить те, що виглядає на глобальному рівні, спробуйте запустити echo .[!.]*чи що завгодно. Потім оболонка розширить глобус і передасть його echo, надрукувавши список результатів файлів.
Тихон Єлвіс

14
Що не в список файлів з іменами , як ..fooі може викликати проблеми з файлами, назва яких починається з -. Він також може провалитися, якщо список аргументів занадто довгий. du -ahd1не було б жодної з цих проблем.
Стефан Шазелас

Непотрібний до початкового питання, але ставлення до день до використання дня: Це може бути корисно включити «с» перемикача для відображення загального і змінювати порядок опціонів трохи , щоб зробити цю команду трохи легше запам'ятати: du -cksh .[!.]* * |sort -h.
Daddy32

56

У мене таке ж питання в списку розсилки coreutils, тому що мені було важко запам'ятати цю дивну команду від @ don.joey. І Боб Пролкс запропонував кращу, більш природну команду: du -ahd1 | sort -h

Якщо ви хочете перерахувати всі файли в поточному каталозі, тоді або використовуйте '.' або взагалі не дайте йому жодних аргументів файлу. Також ви можете скористатися параметром -d, --max-width = N.

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

du -hd1


7
Додайте -aваріант, щоб він був рівноцінним.
Стефан Шазелас

6
Це має бути прийнятою відповіддю, оскільки це простіше і легше запам’ятати і зрозуміти.
Бастієн

8

Коли ви запускаєте ту саму команду всередині каталогу, вона не включає приховані файли, які починаються з .підрахунку. Якщо у вас встановлений Steam, наприклад, він встановлений за замовчуванням для встановлення ігор, ~/.local/share/Steam/і він також встановлений там.

Під bash вам, мабуть, потрібно запустити, du -sch .[!.]* *оскільки він неправильно розширює .*глобус. Під zshабо іншими оболонками du -sch * .*має працювати, як .*слід розширити, щоб включити список усіх прихованих файлів у поточному каталозі.


ГАРАЗД. Тоді, мабуть, виникає проблема з bash, оскільки він, здається, не правильно розширюється .*. Але du -sch * .*чи правильно робиш під zsh. Під bash, du -sch .*здається, рахується, .але не розширюється, щоб показувати файли окремо.
добі

Для мене. * Також розширюється до ../* і тому du виходить із каталогу, що я хочу побачити його розмір! Довелося замість цього використовувати ./. evidence^.Sense*.
Арі

Це zsh, і всі оболонки, отримані з оболонки Форсайта (сьогодні це переважно лише pdksh та його похідні), що роблять правильно і не розширюються. і .. тут. Всі інші оболонки, подібні до Борна (баш, Борн, AT&T ksh, тире, яш ...). У zsh, ви б використовували, du -sch -- *(D)хоча, ні du -sch -- * .*.
Стефан Шазелас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.