Вопрос Почему это не показывает скрытые файлы / папки?


Я просматривал свою систему с помощью 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 ./*,


111
2017-10-11 20:30


происхождения


du -hs .[^.]* * для всех скрытых файлов, без учета  . а также .. которые, похоже, отсутствуют. - laggingreflex


ответы:


использование

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

в вашей домашней папке.

В качестве альтернативы, я использую чаще всего команду

ncdu

Простота установки при необходимости:

sudo apt-get install ncdu

200
2017-10-22 11:30



Спасибо, ты гений. Я не мастер в bash, что делает doe [!.]? - Dr_Bunsen
@Dr_Bunsen: Это glob, в котором перечислены все файлы, которые начинаются с одного ., Вот аккуратный трюк: если вы не знаете, что такое glob-look thing, попробуйте запустить echo .[!.]* или что-то еще. Затем оболочка расширит глобус и передаст его в echo, распечатывая список файлов. - Tikhon Jelvis
Это не список файлов, названных так ..foo и может вызвать проблемы с файлами, имя которых начинается с -, Он также может потерпеть неудачу, если список arg слишком длинный. du -ahd1 не было бы ни одной из этих проблем. - Stéphane Chazelas
Не имеет отношения к первому вопросу, но актуально для повседневного использования: Возможно, было бы полезно включить переключатель «c», чтобы отобразить общее количество и немного изменить порядок параметров, чтобы эта команда немного легче запомнить: du -cksh .[!.]* * |sort -h, - Daddy32


У меня такой же вопрос в списке рассылки coreutils, потому что мне было трудно запомнить эту странную команду @ don.joey. И Боб Проулькс предложенный лучше, более естественная команда: du -ahd1 | sort -h

Если вы хотите перечислить все файлы в текущем каталоге, тогда   либо используйте '.' или вообще не дают никаких аргументов файла. Вас также   может захотеть использовать параметр -d, -max-depth = N.

Попробуй это:

du -hd1


41
2018-06-22 07:19



Добавить -a вариант для его эквивалента. - Stéphane Chazelas
Это должен быть принятый ответ, потому что его проще и легче запомнить и понять. - Bastien


Когда вы запускаете ту же самую команду внутри каталога, она не включает скрытые файлы, которые начинаются с . в счете. Если у вас, например, установлен Steam, он по умолчанию устанавливает игры в соответствии с ~/.local/share/Steam/ и сам он также установлен там.

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


6
2017-10-11 20:48



ОК. По-видимому, проблема с bash тогда, поскольку она, кажется, не должным образом расширяется .*, Но du -sch * .* делает правильную вещь в zsh, Под bash, du -sch .* кажется, считает . но не расширяется, чтобы отображать файлы по отдельности. - dobey
Для меня. * Также расширяется до ../*, и поэтому du выходит из каталога, который я хочу увидеть его размер! Я должен был использовать ./.[^.]*. - Ari
Это zsh и все оболочки, полученные из оболочки Forsyth (в настоящее время это в основном только pdksh и ее производные), которые делают правильные вещи и не расширяются. и здесь. Все другие раковины, подобные Бурне (bash, Bourne, AT & T ksh, тире, yash ...). В zsh, вы должны использовать du -sch -- *(D) хотя и не du -sch -- * .*, - Stéphane Chazelas