2009-04-07 6 views
4

Ich benutze folgenden Suchbefehl, um alle Dateien mit dem eingegebenen Textmuster zu finden und anzuzeigen.Verwenden Sie den Befehl find, um nach allen Dateien zu suchen, die ein Textmuster haben

finden. -type f -print | xargs grep -n „Muster“

ich viele Projekt-Ordner, von denen jeder seine eigene Make-Datei als ‚Makefile‘ genannt hat (ohne Dateierweiterung ‚Makefile‘ nur)

Wie. verwende ich den obigen Befehl, um nach einem bestimmten Muster nur in den Dateien namens Makefile zu suchen, die in allen meinen Projektordnern vorhanden sind?

-AD.

Antwort

6

-print ist nicht erforderlich (mindestens von GNU find Implementierung). -name Argument ermöglicht, Dateinamenmuster anzugeben. Daher würde der Befehl:

find . -name Makefile | xargs grep pattern

1
find . -type f -name 'Makefile' | xargs egrep -n "pattern" 

Verwendung egrep, wenn Sie sehr lange Wege haben

Duplizieren von: this

1

Wenn Sie Leerzeichen oder ungerade Zeichen in Ihrem Verzeichnispfade haben youll müssen die nullterminierte Methode verwenden:

find . -name Makefile -print0 | xargs -0 grep pattern 
1

Sie können die Verwendung von xargs unter Verwendung -exec vermeiden:

find . -type f -name 'Makefile' -exec egrep -Hn "pattern" {} \; 

-H auf egrep den vollständigen Pfad zu den passenden Dateien zur Ausgabe.

0

können Sie den Befehl ff verwenden, d. H. Ff -p .format. Für zB ff -p * .txt

0

finden große Dateien zu besetzen großer Speicherplatz

wir mehrere Befehle kombinieren müssen.

find . -type f | xargs du -sk | sort -n | tail;