¿Por qué 'encontrar' no muestra este archivo?

21

Usando findcon grep, uno puede localizar archivos que coinciden con un patrón:

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

Sin embargo, usando findsolo el primer archivo no se encuentra:

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

¿Por qué no findubica el errors.htmlarchivo cuando no se usa con grep? ¿Cómo se findusa para mostrar este archivo también?

dotancohen
fuente

Respuestas:

42

Debe citar su argumento error*porque el shell lo expande. Entonces, lo que realmente está ejecutando ahora es find -name error_log, porque eso es a lo que el shell puede expandirlo (hay un archivo llamado error_logen su directorio actual).

find . -name 'error*'

Es la invocación correcta para su caso de uso.

Dennis Kaarsemaker
fuente
12
una escritura altenativa es find -name error\*: una tecla menos para presionar;) esto tiene el mismo efecto, *se pasa como un asterisco alfabetizado al comando de búsqueda y no se expande por su caparazón
zhenech
3
Cuando tenga problemas con el shell (cómo interpreta su línea de comandos y pasa todos los argumentos y parámetros al comando real), vuelva a ejecutar el comando precediéndolo con el echocomando. Entonces, si lo hubieras ejecutado echo find . -name error*, habría find . -name error_log
salido