Por que 'find' não mostra esse arquivo?

21

Usando findcom grep, pode-se localizar arquivos que correspondem a um padrão:

# find | grep error
./solr-modifiedSolr4/SolrPhpClient/phpdocs/errors.html
./error_log
./includes/classes/error_log

No entanto, usando findsozinho o primeiro arquivo não foi encontrado:

# find . -name error*
./error_log
./includes/classes/error_log

Por que não findlocaliza o errors.htmlarquivo quando não é usado grep? Como é findusado para mostrar esse arquivo também?

dotancohen
fonte

Respostas:

42

Você precisa citar seu argumento error*porque o shell o expande. Então, na verdade, o que você está executando agora é find -name error_logporque é para isso que o shell pode expandi-lo (há um arquivo nomeado error_logem seu diretório atual).

find . -name 'error*'

É a chamada correta para o seu caso de uso.

Dennis Kaarsemaker
fonte
12
uma escrita altenative é find -name error\*- uma chave menos para imprensa;) isso tem o mesmo efeito, o *é passado como um asterisco alfabetizados para o comando find e não é expandida pelo shell
zhenech
3
Ao ter problemas com o shell (como ele interpreta sua linha de comando e passa todos os argumentos e parâmetros para o comando real), execute novamente o comando, acrescentando-o ao echocomando. Então, se você executar echo find . -name error*teria emitidofind . -name error_log
Carlos Campderrós