Perché 'find' non mostra questo file?


21

Utilizzando findcon grep, è possibile individuare i file che corrispondono a un modello:

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

Tuttavia, utilizzando findda solo il primo file non viene trovato:

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

Perché non findindividuare il errors.htmlfile quando non utilizzato con grep? Come viene findutilizzato anche per mostrare questo file?

Risposte:


42

Devi citare il tuo argomento error*perché la shell lo espande. Quindi quello che stai attualmente eseguendo è find -name error_log, perché è quello a cui la shell può espanderlo (c'è un file chiamato error_lognella tua directory corrente).

find . -name 'error*'

È l'invocazione corretta per il tuo caso d'uso.


12
una scrittura altenativa è find -name error\*- un tasto in meno da premere;) ha lo stesso effetto, *viene passato come un asterisco letterato al comando find e non viene espanso dalla shell
zhenech

3
Quando si verificano problemi con la shell (come interpreta la riga di comando e passa tutti gli argomenti e i parametri al comando effettivo), rieseguire il comando anteponendolo al echocomando. Quindi, se lo avessi eseguito echo find . -name error*, sarebbe find . -name error_log
uscito
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.