Поиск рекурсивно большого файла

Я пытаюсь найти самый большой файл в каталоге рекурсивно. Если внутри этого каталога есть подкаталог, функция должна находиться внутри этого каталога и проверять, существует ли самый большой файл. Как только самый большой файл найден, вывод отображается с относительным именем пути и именем и размером самого большого файла.

EX:

dude@shell2 (~...assignment/solutions) % bash maxfile.sh ~/test class/asn dude.h.gch: 9481628 

Это то, что у меня есть:

 #!/bin/sh clear recursiveS() { for d in *; do if [ -d $d ]; then (cd $d; echo $(pwd)/$line; du -a; recursiveS;) fi done } recursiveS 

Некоторое время я застрял. Я не могу реализовать это путем конвейерной обработки ряда существующих инструментов Unix. Любые идеи были бы хороши!

3 Solutions collect form web for “Поиск рекурсивно большого файла”

используйте find для вывода имен файлов с размером файла. Сортировать. распечатайте самую большую.

 find . -type f -printf "%s\t%p\n" | sort -n | tail -1 

«Чистое» решение bash

 shopt -s globstar max_s=0 for f in **; do if [[ -f "$f" ]]; then size=$( stat -c %s "$f" ) if (( $size > $max_s )); then max_s=$size max_f=$f fi fi done echo "$max_s $max_f" 

Это будет значительно медленнее, чем решение поиска.

Это работает на BSD / macOS:

 find . -type f -ls | sort -k7 -r 

Вы также можете добавить | head -n 3 | head -n 3 чтобы отобразить число интересных записей (в этом случае 3).

Эта команда также позволяет отобразить определенный размер.

 find . -type f -size +100M -exec ls -lh {} \; 
  • Применить команду ко всем файлам в каталоге
  • Как обрабатывать обратные стрелки, клавиши «Конец» и «Домой» в приглашении на чтение
  • как создать скрипт для резервного копирования баз данных MySQL на отдельные файлы?
  • регулярное выражение для извлечения информации в сценарии оболочки
  • Поместите консоль на ttyS0, если гостевая ОС загружается без головного убора
  • Лучший способ работы / отображения дерева изображений, отсортированных по размеру
  • Есть ли заклинание командной строки для сохранения определенных столбцов по имени в CSV-файле?
  • Сравните два раза в формате HH: MM: SS - ksh
  • Как заменить пробелы во всех именах файлов с помощью подчеркивания в Linux с помощью сценария оболочки?
  • как я могу подавить unedsary вывод seds при использовании опции -e?
  • Как преобразовать несколько изображений tiff в координаты xyz в одном текстовом файле с помощью терминала?
  • Linux и Unix - лучшая ОС в мире.