C'è un modo per dire ack
di cercare solo testo nella cartella corrente? (o specificare un max-depth
livello?) E con grep
?
C'è un modo per dire ack
di cercare solo testo nella cartella corrente? (o specificare un max-depth
livello?) E con grep
?
Risposte:
Utilizzare -n
per no-recurse
:
$ ack -n foo
grep
non è ricorsivo per impostazione predefinita e dovresti usare il -r
flag solo se vuoi una ricerca ricorsiva.
È possibile cercare la directory corrente grep
come segue:
$ grep -- foo *
Puoi trovare una coppia con l'argomento -exec. esempio:
find . -maxdepth 1 -exec grep foo {} \;
Questo può essere ridimensionato, ad es -maxdepth 2
-maxdepth 1
) era scalabile. Per esempio -maxdepth 2
. Non so come descrivere la modifica che hai effettuato come tale.
-maxdepth
) non è una sintassi portatile / standard (solo GNU e alcuni BSD). Inoltre, non ha senso utilizzare \;
qui (eseguirne uno grep
per file). Utilizzare grep -H foo {} +
(specifico GNU) o grep foo /dev/null {} +
(standard) per assicurarsi che il nome del file sia sempre stampato. L'equivalente standard -maxdepth 2
sarebbefind . -path './*/*' -type d -prune -o -type f -exec ...
.
se non le dai -mindepth 1
) mentre GNU grep
non proverà a leggere le directory con -r
(si ricorre su di esse). Si consiglia di aggiungere un -d skip
a grep
(supponendo GNU grep) o meglio aggiungere ! -type d
al find
o meglio ancora -type f
(o -xtype f
assumendo GNU find
) come probabilmente non si vuole grep
leggere i file non regolari.
grep -Hin
questo approccio in modo da poter vedere il nome del file e la riga su cui si trova l'evento.
-n
non reclutare affatto.