Seu primeiro exemplo
find /some/path/ -iname "*intro*jpeg" -o -iname "*intro*jpg"
não é equivalente a
find /some/path/ -iname "*intro*jpeg" -o -iname "*intro*jpg" -print
É equivalente a
find /some/path/ \( -iname "*intro*jpeg" -o -iname "*intro*jpg" \) -print
Quando sua expressão contém qualquer ação diferente de -purge
, a impressão implícita não é mais adicionada. Você quer
find /some/path/ \( -iname "*intro*jpeg" -o -iname "*intro*jpg" \) -print0 2> /dev/null
O motivo pelo qual você está obtendo apenas 3 nomes de arquivos é que esses são aqueles que correspondem à sua segunda condição (aquela que tem uma ação). O que você digitou realmente significa
find /some/path/ \( -iname "*intro*jpeg" \) -o \( -iname "*intro*jpg" -print0 \)
Que, esperamos, deixa claro por que apenas um lado imprime qualquer coisa.