Самый быстрый способ найти самый большой файл в каталоге и подкаталогах

Самый быстрый способ найти самый большой файл в каталоге и подкаталогах

Мне нужно найти самый большой файл в текущем и последующем каталоге. Я пробовал

ls -Rlh | awk '{print $3 " " $5 " " $9}' 

но не знаю, нормально ли это, как отсортировать и выбрать самый большой файл.

решение1

ГНУfind+sort+headрешение (для любого уровня глубины каталога), предполагающее, что пути к файлам не содержат символов новой строки:

find . -type f -printf "%s %p\n" | sort -nr | head -1
  • %s- спецификатор формата, указывающий на размер файла (в байтах)
  • %p- спецификатор формата, указывающий на имя файла
  • sort -nr- сортировать записи по номерам в обратном порядке
  • head -1- распечатать первую строку/запись TOP

Чтобы получитьчеловек читаемыйзначение размера файла — расширьте конвейер с помощью numfmtкоманды GNU (если поддерживается):

find . -type f -printf "%s %p\n" | sort -nr | head -1 | numfmt --to=si

решение2

С zsh, для самого большого обычного файла:

ls -ld -- **/*(.DOL[1])

(конечно, вы можете заменить ls -ld --любой командой. Если вы используете GNU lsили совместимую, см. также -hопциюразмеры, удобные для восприятия человеком)

  • .: толькообычныйфайлы (не каталоги, символические ссылки, устройства, fifo...)
  • D: включить скрытые и перейти в скрытые каталоги
  • OL: в обратном порядке по размеру ( Length).
  • [1]: только первое совпадение.

Если есть ничьё, вы получите любое из них наугад. Если вы хотите первое в алфавитном порядке, добавьте дополнительный on( order by name), чтобы отсортировать ничьё в алфавитном порядке.

Связанный контент