вот способ получить высоту и ширину за один шаг:
IFS=x read w h < <(identify "$file" | grep -oP '\d+x\d+(?=\+)')
identify
является частью пакета ImageMagick.
Ваш "$ far" определенно не то, что вам нужно:
for dir in */OEBPS/image/; do
for image in "$dir"/*.{jpg,png,jpeg}; do
IFS=x read w h < <(identify "$image" | grep -oP '\d+x\d+(?=\+)')
echo $((w*h)) "$image"
done | sort -n | tail -1 | {
read size file
echo "largest in $dir is $file"
}
done
На самом деле, identify
может занимать несколько файлов, поэтому более эффективный метод:
for dir in */OEBPS/image/; do
identify "$dir"/*.{jpg,png,jpeg} |
awk '{split($(NF-6), a, /x/); split($0, b, /[[]/); print a[1]*a[2], b[1]}' |
sort -n | tail -1 | {
read size file
echo "largest in $dir is $file"
}
done
Команда awk немного сложна, потому что я хотите обрабатывать имена изображений, которые могут содержать пробелы
Если я правильно понял, ваш первый персонаж #
создает вам здесь проблемы. Поэтому я бы посоветовал вам использовать команду cut
для удаления первого символа
CLEAN_EMAIL=$(echo $RECIPIENT | cut -c 2-); echo $CLEAN_EMAIL