Come eseguire la ricerca di profondità massima in ack e grep?


32

C'è un modo per dire ackdi cercare solo testo nella cartella corrente? (o specificare un max-depthlivello?) E con grep?


1
No, ack non ha un'opzione di profondità massima, a parte il -nnon reclutare affatto.
Andy Lester,

Risposte:


22

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 *

13
Non risponde alla domanda? (cosa succede se voglio fare una ricognizione a una profondità di 2)
Steven Lu,

Bene, l'ho perso. Eventuali suggerimenti?
Eric Wilson,

29

Puoi trovare una coppia con l'argomento -exec. esempio:

find . -maxdepth 1 -exec grep foo {} \;

Questo può essere ridimensionato, ad es -maxdepth 2


Stephane, la mia risposta ( -maxdepth 1) era scalabile. Per esempio -maxdepth 2. Non so come descrivere la modifica che hai effettuato come tale.
David Wilkins,

non raggiungerà @stephane se non si utilizza @.
Braiam,

4
Sì scusa, sono d'accordo che la mia modifica è stata troppo invadente. Potresti comunque voler chiarire che quella ( -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 ...
Stéphane Chazelas il

2
Nota anche che i tuoi daranno messaggi di errore per le directory (anche .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.
Stéphane Chazelas,

4
Tendo a utilizzare grep -Hinquesto approccio in modo da poter vedere il nome del file e la riga su cui si trova l'evento.
PIL2,
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.