Além disso, uma maneira sem xargs:
find . -name "*.haml" -ls -exec haml --check {} \;
para imprimir apenas o nome do arquivo com o caminho:
find . -name "*.haml" -print -exec haml --check {} \;
Estou tentando aplicar dois comandos ( echo
e haml --check
) ao resultado de meu find
.
haml --check 'find . -name "*.haml"'
# return Syntax error on line 2: Illegal nesting: nesting within plain text is illegal.
# but I don't know which file
echo 'find . -name "*.haml"'
# returns list of files (space separated)
Idealmente, quero imprimir o nome do arquivo e, em seguida, a saída de haml --check
desse arquivo em stdout
.
find . -name "*.haml" -print0 | xargs -0 -n 1 --no-run-if-empty haml --check
executa o haml em cada arquivo encontrado por find
Se haml
puder receber vários arquivos em uma só chamada, você poderá deixar de fora o -n 1
Aqui está uma maneira portátil e eficiente de executar múltiplos comandos com find sem usar os truques "-print0" e "xargs -0" específicos do GNU:
find . -name "*.haml" -exec sh -c 'for i; do echo $i;ls -l $i;haml --check $i; done' sh {} +
Tags find