Как различить файл и каталог в выводе 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

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