C'è un modo per dire ackdi cercare solo testo nella cartella corrente? (o specificare un max-depthlivello?) E con grep?
C'è un modo per dire ackdi cercare solo testo nella cartella corrente? (o specificare un max-depthlivello?) E con grep?
Risposte:
Utilizzare -nper no-recurse:
$ ack -n foo
grepnon è ricorsivo per impostazione predefinita e dovresti usare il -rflag solo se vuoi una ricerca ricorsiva.
È possibile cercare la directory corrente grepcome 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 grepper 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 2sarebbefind . -path './*/*' -type d -prune -o -type f -exec ...
.se non le dai -mindepth 1) mentre GNU grepnon proverà a leggere le directory con -r(si ricorre su di esse). Si consiglia di aggiungere un -d skipa grep(supponendo GNU grep) o meglio aggiungere ! -type dal findo meglio ancora -type f(o -xtype fassumendo GNU find) come probabilmente non si vuole grepleggere i file non regolari.
grep -Hinquesto approccio in modo da poter vedere il nome del file e la riga su cui si trova l'evento.
-nnon reclutare affatto.