aqui está uma maneira de obter a altura e a largura em uma etapa:
IFS=x read w h < <(identify "$file" | grep -oP '\d+x\d+(?=\+)')
identify
faz parte do pacote ImageMagick.
Seu "$ far" certamente não é o que você quer:
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
Na verdade, identify
pode receber vários arquivos, portanto, uma técnica mais eficiente:
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
O comando awk é um pouco complicado porque eu quero manipular nomes de imagens que podem conter espaços