Почему при этом не отображаются скрытые файлы / папки?

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

$ du -sch ./*du: cannot read directory ‘./drbunsen/.gvfs’: Permission denieddu: cannot read directory ‘./drbunsen/.cache/dconf’: Permission denied18G ./drbunsen18G total$ cd drbunsen/$ du -sch ./*601M ./Desktop20K ./Documents598M ./Downloads4.0K ./flash4.0K ./Music8.0M ./Pictures4.0K ./Public4.0K ./Templates4.0K ./Ubuntu One8.0K ./Videos11G ./VirtualBox VMs6.9M ./workspace12G total

Как мне сделать скрытые файлы видимыми? du -sch ./.* дает тот же результат, что и du -sch ./*.

Воспользуйся

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

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

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

ncdu

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

sudo apt-get install ncdu

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

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

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

из -hd1

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

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

Я не думаю, что du утилита имеет переключатель командной строки для обработки скрытых файлов по умолчанию.

Одним из способов достижения этой цели является использование find утилита для поиска интересующих вас скрытых файлов, а затем запустите du полезность для каждой записи:

find ./ -maxdepth 1 -name '.*' -exec  du -hs {} \;

Это дает вам дополнительную гибкость, поскольку вас могут интересовать только каталоги:

find ./ -maxdepth 1 -type d -name '.*' -exec  du -hs {} \;

Или вы можете захотеть просмотреть все скрытые файлы и каталоги в глубине текущего рабочего каталога:

find ./ -name '.*' -exec  du -hs {} \;

Сортировать выходные данные не намного сложнее, поэтому вы можете легко идентифицировать большие скрытые файлы, которые могут помочь вам сэкономить место на диске:

{ find ./ -maxdepth 1 -iname '.*' -exec  du -hs \{\} \; ;} | sort -h

Это также работает для отображения скрытых файлов и каталогов:

du -sch $(ls -A .) | sort -h

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

Здесь недостаточно представителей, чтобы ответить на этот очень активный вопрос, поэтому вместо этого краткий комментарий. Если вы используете bash, вы можете “исправить” это, используя опцию оболочки dotglob. Я использую здесь подоболочку, чтобы она не влияла глобально на другие команды => (shopt -s dotglob; du -shc *)