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

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

1
задан 19 October 2015 в 12:00

2 ответа

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

Если вы хотите перечислить все файлы в текущем каталоге, используйте либо «.». или вообще не дают никаких аргументов файла. Также вы можете использовать параметр -d, --max-depth = N. Попробуйте следующее: du -hd1
38
ответ дан 24 May 2018 в 16:58
  • 1
    Добавьте опцию -a, чтобы она была эквивалентной. – Stéphane Chazelas 22 June 2015 в 23:16
  • 2
    Это должен быть принятый ответ, потому что его проще и легче запомнить и понять. – Bastien 10 September 2015 в 11:47

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

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

6
ответ дан 24 May 2018 в 16:58
  • 1
    ОК. По-видимому, существует проблема с bash, так как она, похоже, не расшифровывается надлежащим образом .*. Но du -sch * .* делает правильную вещь в zsh. Под bash, du -sch .*, кажется, считает ., но не расширяется, чтобы отображать файлы по отдельности. – dobey 22 October 2013 в 18:39
  • 2
    Для меня. * Также расширяется до ../*, и поэтому du выходит из каталога, который я хочу увидеть его размер! Я должен был использовать ./.[^.]*. – Ari 20 September 2014 в 03:58
  • 3
    Это zsh и все оболочки, полученные из оболочки Forsyth (в настоящее время это в основном только pdksh и ее производные), которые делают правильные вещи и не расширяются. и здесь. Все другие раковины, подобные Бурне (bash, Bourne, AT & amp; T ksh, тире, yash ...). В zsh вы использовали бы du -sch -- *(D), но не du -sch -- * .*. – Stéphane Chazelas 22 June 2015 в 23:11

Другие вопросы по тегам:

Похожие вопросы: