У меня такой же вопрос в списке рассылки coreutils, потому что мне было трудно запомнить эту странную команду от @don.joey. И Боб Проулкс предложенный лучшая, более естественная команда: du -ahd1 | sort -h
Если вы хотите перечислить все файлы в текущем каталоге, то либо используйте '.', либо вообще не указывайте ему никаких аргументов файла. Также вы можете захотеть использовать опцию -d, --max-depth=N.
Когда вы запускаете ту же команду внутри каталога, она не включает скрытые файлы, которые начинаются с . в графе. Например, если у вас установлен 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 {} \;
Сортировать выходные данные не намного сложнее, поэтому вы можете легко идентифицировать большие скрытые файлы, которые могут помочь вам сэкономить место на диске:
Здесь недостаточно представителей, чтобы ответить на этот очень активный вопрос, поэтому вместо этого краткий комментарий. Если вы используете bash, вы можете “исправить” это, используя опцию оболочки dotglob. Я использую здесь подоболочку, чтобы она не влияла глобально на другие команды => (shopt -s dotglob; du -shc *)