Como a Steeldriver apontou, seu problema não é awk
, é file
. Não há NUL na entrada que você está dando para awk
porque file
o usou. Eu faria essa coisa toda no shell:
find . -type f -print0 | while IFS= read -r -d '' file; do
file --mime-type "$file" | grep -qP "\bimage/" &&
printf '%s %sfind . -type f -print0 | while IFS= read -r -d '' file; do
file --mime-type "$file" | grep -qP "\bimage/" &&
printf '%s %s%pre%' $(identify -format '%[fx:w*h]' "$file") "$file";
done | sort -gz | tr '%pre%' '\n'
256 ./file 10
256 ./file 15
484 ./file 16
576 ./file 11
576 ./file 17
1024 ./file 12
1024 ./file 19
2304 ./file 13
5625 ./file 14
15190 ./file 2
15680 ./file 1
16384 ./file 9
65536 ./file 18
145200 ./file 0
183531 ./file 6
364807 ./file
3
364807 ./file 4
364807 ./file 5
388245 ./file 8
550560 ./file 7
' $(identify -format '%[fx:w*h]' "$file") "$file";
done | sort -gz | tr '%pre%' '\n'
256 ./file 10
256 ./file 15
484 ./file 16
576 ./file 11
576 ./file 17
1024 ./file 12
1024 ./file 19
2304 ./file 13
5625 ./file 14
15190 ./file 2
15680 ./file 1
16384 ./file 9
65536 ./file 18
145200 ./file 0
183531 ./file 6
364807 ./file
3
364807 ./file 4
364807 ./file 5
388245 ./file 8
550560 ./file 7
Eu incluí sort
, pois suponho que você esteja tentando melhorar sua resposta aqui . O exemplo acima foi executado em nomes de arquivos com espaços e um ( file\n3
com uma nova linha). Por algum motivo, identify
não imprime printf
linhas terminadas, então usei %code% .