Se por "top 5" você quer dizer por tamanho, então você precisa dizer sort para qual coluna classificar; o padrão passará por todas as colunas em ordem, o que significa classificar inicialmente pelo número de links. Além disso, sem algum tipo de extensão, o tamanho "legível por humanos" não será ordenado, exceto no GNU sort ; portatil sort -n não sabe sobre sufixos como B , K , etc. Note também que você perde as informações de ordenação que você pediu ls porque está sendo executado em arquivos individuais sob o controle de find . E, em seguida, o seu sort classifica do menor para o maior, por isso mesmo corrigindo que você obtenha as cinco menores imagens de head . (E o || antes de awk um erro de digitação? Você está dizendo para executar awk somente se o fluxo find falhar.)
Combinando tudo isso e otimizando usando xargs para agrupar as coisas e combinando o head no awk , o que você quer é ter certeza que você tem o GNU sort , então use
find . \( -iname \*.png -o -iname \*.jpg \) -print0 | xargs -0 ls -lh | sort -k5gr,5 | awk 'NR <= 5 {print $9, "=>", $5}'