Я хочу сделать что-то подобное
du -a | sort -rn | head
Но я хочу извлекать только файлы, игнорируя каталоги.
Для ясности, я хочу пройтись по всем подкаталогам, но не хочу находить размеры каталогов. Просто размеры файлов.
ОБНОВИТЬ
Еще хочу вернуть полный путь к файлам
Это должно работать:
find <path> -type f -exec du -a{} + | sort -rn | head
Взято из http://unix-linux.itags.org/q_unix-linux-programming_84920.html
Я просто хочу добавить свое решение, хотя оно не так полно, как решение @Michael Plotke
ls -lR | egrep "^-" | awk '{ print $5, "\t", $8 }' | sort -rn | head
ОБНОВЛЕНИЕ 1
Теперь мне пришлось использовать этот сценарий в BSD unix (что я изначально не собирался делать) и обнаружил, что решение Майкла не работает.
Благодаря включению решения @teve в мое решение стало более удобным для использования в системах BSD:
find . -type f | xargs ls -lS | awk '{ print $5, "\t", $9 }' | head
ОБНОВЛЕНИЕ 2
Дальнейшая доработка. Решает проблемы с необычными именами файлов (например, пробелами)
find . -type f -print0 | xargs -0 ls -lS | awk '{ print $5, "\t", $9 }' | head
Заметка: Я обнаружил, что это решение значительно быстрее на WSL (подсистема Windows Linux), чем принятое решение.
В каталоге, содержащем около 1000 файлов, это решение занимает секунды, тогда как принятый ответ занял десятки минут.
Один из способов найти самый большой файл в каталоге:
find . -type f | xargs ls -1S | head -n 1