GNU/Linux >> Linux Esercitazione >  >> Linux

Elenca i nomi dei file in base a un modello di nome file e al contenuto del file?

grep LMN20113456 LMN2011*

o se vuoi cercare in modo ricorsivo attraverso le sottodirectory:

find . -type f -name 'LMN2011*' -exec grep LMN20113456 {} \;

Può essere fatto senza find anche usando "--include" di grep opzione.

La pagina man di grep dice:

--include=GLOB
Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).

Quindi, per eseguire una ricerca ricorsiva di una stringa in un file che corrisponde a uno schema specifico, sarà simile a questa:

grep -r --include=<pattern> <string> <directory>

Ad esempio, per cercare in modo ricorsivo la stringa "mytarget" in tutti i Makefile:

grep -r --include="Makefile" "mytarget" ./

Oppure per cercare in tutti i file che iniziano con "Make" nel nome del file:

grep -r --include="Make*" "mytarget" ./

Grep NON usa i "caratteri jolly" per la ricerca:questo è il globbing della shell, come *.jpg.Grep usa "espressioni regolari" per la corrispondenza dei modelli. Mentre nella shell '*' significa "qualsiasi cosa", in grep significa "abbina l'elemento precedente zero o più volte".

Maggiori informazioni ed esempi qui:http://www.regular-expressions.info/reference.html

Per rispondere alla tua domanda, puoi trovare i file che corrispondono a qualche pattern con grep:

find /somedir -type f -print | grep 'LMN2011' # that will show files whose names contain LMN2011

Quindi puoi cercare il loro contenuto (senza distinzione tra maiuscole e minuscole):

find /somedir -type f -print | grep -i 'LMN2011' | xargs grep -i 'LMN20113456'

Se i percorsi possono contenere spazi, dovresti usare la funzione "zero end":

find /somedir -type f -print0 | grep -iz 'LMN2011' | xargs -0 grep -i 'LMN20113456'

Linux
  1. Come copiare le autorizzazioni e la proprietà dei file su un altro file in Linux

  2. Come posso cercare uno schema multilinea in un file?

  3. Come si esegue `less` e si esegue automaticamente un modello di ricerca?

  4. Cos'è esattamente <() in bash (e =() in zsh)?

  5. AWK e nomi di file con spazio al suo interno.

Crea ed estendi il filesystem XFS basato su LVM

Comando Ls in Linux (Elenca file e directory)

Come eseguire la ricerca del modello nei file utilizzando Grep

Manipolazione del testo con sed e grep

Output su Stdout e allo stesso tempo Grep in un file?

Come eseguire la ricerca Grep su tutti i file e in tutte le directory