Как различить файл и каталог в выводе du -sh
Выход из du -sh * | sort -h
перечисляет все файлы и каталоги в отсортированном порядке в зависимости от размера. Но проблема в том, вывод не отличает каталоги от файлов.
Например:
15K file1backup
16K Desktop
Есть ли вариант du, который облегчает разграничение файлов и каталогов?
4 ответа
Самое близкое, что я мог получить, используя оригинальную команду от OP, было это:
ls -p | xargs -I{} du {} -sh | sort -h
.. который сейчас, кажется, работает.
Нет, мое чтение руководства говорит о том, что du не делает различий между файлами и каталогами.
Вы холодно дифференцировать себя с чем-то вроде
find . -maxdepth 1 -type f -print0 | du -sh --files0-from -
для файлов и
find . -maxdepth 1 -type d -print0 | du -sh --files0-from -
для каталогов. Настройте другие параметры по мере необходимости.
Вы действительно должны попробовать руководство. Просто делаю du -h
будет делать только каталоги, которые вы на самом деле должны добавить аргумент, чтобы заставить его делать файлы (-a
). Причина, по которой ваша команда выполняет файлы, заключается в *
,
Если вы хотите отсортировать только каталоги верхнего уровня, возможно, самое простое:
du -h | grep -v '[^.]/' | sort -h
Есть ли man du
предложить переключатель, чтобы сделать это? - нет
Вы можете быть умным об этом? Может быть
du -s */ |sort -n
ограничит вас подкаталогами, за исключением файлов в вашем $PWD, и вы можете использовать ls
сортировать эти файлы по размеру довольно легко с ls --group-directories-first -Ssh
,
Или вообще используйте другой инструмент: ncdu