Vraag Recursieve tekstzoekopdracht met grep- en bestandspatronen


Gezien deze voorbeeld mapstructuur:

/folder1/file1.txt
/folder1/file2.djd
/folder2/file3.txt
/folder2/file2.fha

Hoe voer ik een recursieve tekstzoekfunctie uit voor iedereen *.txt bestanden met grep van "/"?

("grep -r <pattern> *.txt" mislukt wanneer uitgevoerd vanaf "/", omdat er geen zijn .txt bestanden in die map.)


44
2018-05-19 11:38


oorsprong




antwoorden:


Mijn versie van GNU Grep heeft hier een omschakeling voor:

grep -R --include='*.txt' $Pattern

Beschreven als volgt:

--include=GLOB

Zoek alleen bestanden waarvan de naam overeenkomt met GLOB (met behulp van jokertekens, zoals beschreven bij --exclude).


58
2018-05-19 12:01





Als u een groot aantal bestanden hebt, zou het handig zijn om xargs op te nemen in de opdracht om een ​​fout 'Argumentlijst te lang' te voorkomen.

find . -name '*.txt' -print | xargs grep <pattern>

18
2018-05-19 12:02



Als er spaties zijn in een van de bestands- of mapnamen, gebruik dan dit formulier: find. -name '* .txt' -print0 | xargs -0 grep <patroon> - Jason Luther
En natuurlijk is er de kwestie van bestandsnamen die beginnen -. - T.J. Crowder
grep is sneller van find. - Nabi K.A.Z.


je zou in staat kunnen zijn om gebruik te maken van jouw zsh's EXTENDED_GLOB keuze (docs)

grep <pattern> **/*.txt

1
2018-05-13 07:22



Alleen als OP zsh gebruikt, maar toch interessant. - Law29


find . -name '*.txt' -type f -exec grep <pattern> {} \;

0
2018-05-19 11:43



misschien wil je in plaats daarvan "find. -name '* .txt' -type f -exec grep <pattern> {} +" gebruiken, zodat het zich eerder op dezelfde manier gedraagt ​​als de verisie met van Mark Robinson - werkt alleen met GNU find to my knowledge - serverhorror


Het antwoord van Mannis zou een nieuw grep-proces afvuren voor elk tekstbestand. Als je hebt veel van tekstbestanden daar, zou je kunnen overwegen om elk bestand eerst te greppen en de .txt-bestanden te kiezen als dat klaar is:

grep -r <pattern> * | grep \.txt:

Dat is meer schijfintensief, maar het kan hoe dan ook sneller zijn.


0
2018-05-19 11:46





Misschien wilt u eens kijken naar ack at http://betterthangrep.com, met faciliteiten voor het selecteren van bestanden om te zoeken op bestandstype.


0
2018-05-03 16:54