No primeiro exemplo, seu shell expandirá primeiro o *.c
para corresponder a todos os arquivos no diretório atual que terminam em .c
.
Portanto, se você tiver one.c
, zwei.c
e tres.c
em seu diretório, seu shell expandirá isso para
find . -name one.c zwei.c tres.c
e find
provavelmente ficarão confusos porque você está passando alguns argumentos extras depois que -name one.c
- zwei.c
e tres.c
não são considerados parte do que você está pesquisando com -name
.
No segundo exemplo, você está passando a string literal *.c
para a opção -name
de find
. Isso é algo que o find
sabe como lidar - e provavelmente o que você está procurando.
Uma maneira alternativa de realizar a mesma coisa seria com uma fuga de barra invertida:
find . -name \*.c
(Observe também que seus exemplos precisam de um argumento para informar find
onde iniciar a pesquisa. Isso geralmente é apenas .
para indicar o diretório atual.)