Não é culpa do head
; é ls
.
ls
quase sempre classifica sua saída (por padrão, por nome; se solicitado, por data).
E é da natureza de qualquer tipo que não pode produzir qualquer saída
até que leia toda a entrada.
find
não classifica sua saída, então pode começar a produzir mais rápido.
Você poderia ter visto isso por si mesmo simplesmente executando
ls
e
find
e observando a diferença no tempo de resposta.
BTW, você pode obter ls
para listar diretórios sem classificar, especificando -U
.