Я пытаюсь найти самый большой файл в каталоге рекурсивно. Если в этом каталоге есть подкаталог, функция должна зайти в этот каталог и проверить, есть ли там самый большой файл. Как только найден самый большой файл, выводится вывод с относительным именем пути, именем и размером самого большого файла.
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. Любые идеи были бы хорошими!
bash
shell-script
recursive
user2419571
источник
источник
for d in */ .[^.]*/
; до ... `Ответы:
используйте
find
(здесь предполагается GNUfind
) для вывода имен файлов с размером файла. Сортировать. распечатать самый большой.Это предполагает, что пути к файлам не содержат символов новой строки.
Использование цикла в
bash
реализации GNUstat
:Это будет значительно медленнее, чем поиск решения. Это также предполагает, что имена файлов не заканчиваются символами новой строки и будут пропускать скрытые файлы, а не переходить в скрытые каталоги.
Если
-
в текущем каталоге вызывается файл, будет учитываться размер файла, открытого на stdin.Помните, что версии
bash
до 4.3 следовали символическим ссылкам при спуске дерева каталогов.источник
tail -n 1 <(sort -n <(find . -type f -printf "%s\t%p\n"))
)Эта команда также помогает определить определенный размер.
источник
Это работает на BSD / macOS:
Вы также можете добавить,
| head -n 3
чтобы отобразить количество интересных записей (3 в данном случае).источник
man find
иman sort
используйте brainz :-)С
zsh
, для самого большого регулярного файла:(конечно, вы можете заменить
ls -ld --
любой командой. Если вы используете GNUls
или совместимую, смотрите также-h
опцию для удобочитаемых размеров ).
: только обычные файлы (не каталоги, символические ссылки, устройства, fifos ...)D
: включить скрытые и спуститься в скрытые каталогиOL
: в обратном порядке по размеру (L
ength).[1]
: только первый матч.Если есть связи, вы получите любой из них наугад. Если вы хотите первый в алфавитном порядке, добавьте дополнительный
on
(o
rder byn
ame) для сортировки связей в алфавитном порядке.Обратите внимание, что он учитывает размер файлов, а не использование диска.
источник
[1]
на[1,10]