É para isso que serve o predicado -exec :
find /some/path -type f -name file.pl -size +10M -exec perl /my/script.pl {} \;
Se você quiser que o seu shell execute os comandos com base na saída de find , então isso terá que ser bash / zsh específico se você quiser ser confiável como em:
-
zsh:IFS=$'
' for f ($(find /some/path -type f -name file.pl -size +10M -print0)) { /my/script.pl $f }for f (./**/file.pl(.LM+10)) /my/script.pl $fembora em
zsh, você pode simplesmente fazer:while IFS= read -rd '' -u3 file; do /my/script.pl "$file" done 3< <(find /some/path -type f -name file.pl -size +10M -print0) -
bash/zshfor file in $(find...)
Seja o que for que você faça, em bash ou outros shells POSIX, evite:
IFS='
'; set -f; for file in $(find...)
Ou, pelo menos, reduza o problema fixando o separador de campo na nova linha e desabilitando a globbing:
find /some/path -type f -name file.pl -size +10M -exec perl /my/script.pl {} \;
(que ainda falhará nos caminhos de arquivo que contêm caracteres de nova linha).