Estou tentando encontrar arquivos com extensões *.c
e *.h
. Eu uso o seguinte comando
find "$path" -type f -iname "*.c" -o -iname "*.h" -exec ls {} \;
Isso só executa as *.h
correspondências. Eu tentei -o -iname *.c -o -iname *.h
a mesma coisa acontece. Gostaria de executar em arquivos c e h?
Você precisa agrupar as cláusulas disjuntas:
Sem isso,
find
interpreta seu comando como dois conjuntos disjuntos de cláusulas:-type f -iname "*.c"
de um lado e-iname "*.h" -exec ls {} \;
do outro. É por isso que você só vê*.h
correspondências.Aliás, não faz muito sentido correr
ls
assim; você também pode usar(mas talvez
ls
seja um espaço reservado).Você também pode simplificar seu comando combinando os dois globos:
(dependendo da
-print
ação padrão).