it-swarm-eu.dev

Wie finde ich alle Dateien, die bestimmten Text enthalten, unter Linux?

Ich versuche, eine Möglichkeit zu finden, mein gesamtes Linux-System nach allen Dateien zu durchsuchen, die eine bestimmte Textzeichenfolge enthalten. Zur Verdeutlichung suche ich nach Text in der Datei, nicht nach dem Dateinamen.

Als ich nachgeschaut habe, wie das geht, bin ich zweimal auf diese Lösung gestoßen:

find / -type f -exec grep -H 'text-to-find-here' {} \;

Es funktioniert jedoch nicht. Es scheint, als würde jede einzelne Datei im System angezeigt.

Ist dies nah an der richtigen Vorgehensweise? Wenn nicht, wie soll ich Diese Fähigkeit, Textzeichenfolgen in Dateien zu finden, wäre für einige meiner Programmierprojekte außerordentlich nützlich.

4709
Nathan

Mach Folgendes:

grep -rnw '/path/to/somewhere/' -e 'pattern'
  • -r oder -R ist rekursiv,
  • -n ist die Zeilennummer und
  • -w steht für Übereinstimmung mit dem gesamten Wort.
  • -l (Kleinbuchstabe L) kann hinzugefügt werden, um nur den Dateinamen der übereinstimmenden Dateien anzugeben.

Zusammen mit diesen können --exclude, --include, --exclude-dir Flags für eine effiziente Suche verwendet werden:

  • Dies durchsucht nur die Dateien mit den Endungen .c oder .h:

    grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
    
  • Dies schließt das Durchsuchen aller Dateien mit der Erweiterung .o aus:

    grep --exclude=*.o -rnw '/path/to/somewhere/' -e "pattern"
    
  • Für Verzeichnisse ist es möglich, ein bestimmtes Verzeichnis (oder bestimmte Verzeichnisse) über den Parameter --exclude-dir auszuschließen. Dies schließt beispielsweise die Verzeichnisse dir1 /, dir2/und alle mit * .dst/übereinstimmenden Verzeichnisse aus:

    grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
    

Dies funktioniert sehr gut für mich, um fast den gleichen Zweck wie Ihren zu erreichen.

Weitere Optionen finden Sie in man grep.

8509
rakib_

Sie können grep -ilR verwenden:

grep -Ril "text-to-find-here" /
  • i steht für Groß- und Kleinschreibung ignorieren (optional in Ihrem Fall).
  • R steht für rekursiv.
  • l steht für "Zeige den Dateinamen, nicht das Ergebnis selbst".
  • / steht für den Start im Stammverzeichnis Ihres Computers.
1350
fedorqui

Sie können ack verwenden. Es ist wie grep für den Quellcode. Sie können damit Ihr gesamtes Dateisystem scannen.

Mach einfach:

ack 'text-to-find-here'

In Ihrem Stammverzeichnis.

Sie können auch reguläre Ausdrücke verwenden, den Dateityp angeben usw.


UPDATE

Ich habe gerade The Silver Searcher entdeckt, das ist wie ack, aber 3-5x schneller als es und ignoriert sogar Muster aus einer .gitignore -Datei.

297
EarlOfEgo

Sie können verwenden:

grep -r "string to be searched"  /path/to/dir

Das r steht für rekursiv und durchsucht daher den angegebenen Pfad sowie dessen Unterverzeichnisse. Dies teilt Ihnen den Dateinamen mit und gibt die Zeile in der Datei aus, in der die Zeichenfolge angezeigt wird.

Oder einen Befehl ähnlich dem, den Sie versuchen (Beispiel:), um in allen Javascript-Dateien (* .js) zu suchen:

find . -name '*.js' -exec grep -i 'string to search for' {} \; -print

Dadurch werden die Zeilen in den Dateien gedruckt, in denen der Text angezeigt wird, der Dateiname wird jedoch nicht gedruckt.

Zusätzlich zu diesem Befehl können wir auch Folgendes schreiben: grep -rn "Zu durchsuchender String"/path/to/directory/or/file - r: rekursiv Suche n: Zeilennummer wird für Übereinstimmungen angezeigt

173
learner_19

Sie können dies verwenden:

grep -inr "Text" folder/to/be/searched/
103
A R

Liste der Dateinamen, die einen bestimmten Text enthalten

Zunächst glaube ich, dass Sie -H anstelle von -l verwendet haben. Sie können auch versuchen, den Text in Anführungszeichen gefolgt von {} \ einzufügen.

find / -type f -exec grep -l "text-to-find-here" {} \; 

Beispiel

Angenommen, Sie suchen in Ihrem Verzeichnis nach Dateien, die bestimmten Text "Apache License" enthalten. Es werden Ergebnisse angezeigt, die der folgenden ähneln (die Ausgabe hängt von Ihrem Verzeichnisinhalt ab).

bash-4.1$ find . -type f -exec grep -l "Apache License" {} \; 
./net/Java/jvnet-parent/5/jvnet-parent-5.pom
./commons-cli/commons-cli/1.3.1/commons-cli-1.3.1.pom
./io/swagger/swagger-project/1.5.10/swagger-project-1.5.10.pom
./io/netty/netty-transport/4.1.7.Final/netty-transport-4.1.7.Final.pom
./commons-codec/commons-codec/1.9/commons-codec-1.9.pom
./commons-io/commons-io/2.4/commons-io-2.4.pom
bash-4.1$ 

Entfernen Sie die Groß-/Kleinschreibung

Auch wenn Sie die Groß-/Kleinschreibung nicht wie "text" vs "TEXT" verwenden, können Sie den Schalter -i verwenden, um die Groß-/Kleinschreibung zu ignorieren. Sie können weitere Details lesen hier .

Hoffe das hilft dir.

63
lkamal

grep ( GNU oder BSD )

Sie können das Tool grep verwenden, um den aktuellen Ordner rekursiv zu durchsuchen. Beispiel:

grep -r "class foo" .

Hinweis: -r - Durchsucht rekursiv Unterverzeichnisse.

Sie können auch die Globbing-Syntax verwenden, um in bestimmten Dateien zu suchen, z.

grep "class foo" **/*.c

Hinweis: Mit der Globbing-Option (**) werden alle Dateien mit einer bestimmten Erweiterung oder einem bestimmten Muster rekursiv gescannt. Um diese Syntax zu aktivieren, führen Sie Folgendes aus: shopt -s globstar . Sie können auch **/*.* für alle Dateien (mit Ausnahme von ausgeblendeten Dateien) verwenden und ohne Erweiterung) oder ein anderes Muster.

Wenn Sie den Fehler haben, dass Ihr Argument zu lang ist, können Sie Ihre Suche eingrenzen oder die Syntax find verwenden, z. B .:

find . -name "*.php" -execdir grep -nH --color=auto foo {} ';'

Alternativ können Sie ripgrep verwenden.

ripgrep

Wenn Sie an größeren Projekten oder großen Dateien arbeiten, sollten Sie stattdessen ripgrep verwenden, beispielsweise:

rg "class foo" .

Überprüfen Sie die Dokumente, Installationsschritte oder den Quellcode auf der GitHub-Projektseite .

Es ist viel schneller als jedes andere Tool wie GNU / BSDgrep , ucg , ag , sift , ack , pt oder ähnliches, da es auf Rusts Regex-Engine basiert, die endliche Werte verwendet Automaten-, SIMD- und aggressive wörtliche Optimierungen, um die Suche sehr schnell zu machen.

Es unterstützt Ignoriermuster, die in .gitignore-Dateien angegeben sind, sodass ein einzelner Dateipfad gleichzeitig mit mehreren Glob-Mustern abgeglichen werden kann.


Sie können die allgemeinen Parameter verwenden, z.

  • -i - Unempfindliche Suche.
  • -I - Ignoriere die Binärdateien.
  • -w - Suche nach den ganzen Wörtern (im Gegensatz zur partiellen Wortübereinstimmung).
  • -n - Zeigen Sie die Zeile Ihres Matches an.
  • -C/--context (z. B. -C5) - Erhöht den Kontext, sodass Sie den umgebenden Code sehen.
  • --color=auto - Markieren Sie den passenden Text.
  • -H - Zeigt den Dateinamen an, in dem sich der Text befindet.
  • -c - Zeigt die Anzahl der übereinstimmenden Zeilen an. Kann mit -H kombiniert werden.
59
kenorb

Wenn Ihr grep keine rekursive Suche unterstützt, können Sie find mit xargs kombinieren:

find / -type f | xargs grep 'text-to-find-here'

Ich finde das leichter zu merken als das Format für find -exec.

Dadurch werden der Dateiname und der Inhalt der übereinstimmenden Zeile ausgegeben, z.

/home/rob/file:text-to-find-here

Optionale Flags, die Sie möglicherweise zu grep hinzufügen möchten:

  • -i - Suche ohne Berücksichtigung der Groß-/Kleinschreibung
  • -l - Nur den Dateinamen ausgeben, in dem die Übereinstimmung gefunden wurde
  • -h - Nur die übereinstimmende Zeile ausgeben (nicht den Dateinamen)
53
RobEarl
grep -insr "pattern" *
  • i: Ignoriert die Unterscheidung zwischen Groß- und Kleinschreibung sowohl im PATTERN als auch in den Eingabedateien.
  • n: Stellen Sie jeder Ausgabezeile die auf 1 basierende Zeilennummer in der Eingabedatei voran.
  • s: Unterdrückt Fehlermeldungen zu nicht vorhandenen oder nicht lesbaren Dateien.
  • r: Alle Dateien in jedem Verzeichnis werden rekursiv gelesen.
40
enfinet

Wie finde ich alle Dateien, die bestimmten Text enthalten, unter Linux? (...)

Ich bin zweimal auf diese Lösung gestoßen:

find / -type f -exec grep -H 'text-to-find-here' {} \;


Wenn Sie find wie in Ihrem Beispiel verwenden, sollten Sie -s (--no-messages) zu grep hinzufügen. und 2>/dev/null am Ende des Befehls, um viele Nachrichten mit verweigerter Berechtigung zu vermeiden, die von grep und find ausgegeben werden:

find / -type f -exec grep -sH 'text-to-find-here' {} \; 2>/dev/null

find ist das Standardwerkzeug zum Durchsuchen von Dateien - kombiniert mit grep, wenn nach spezifischem Text gesucht wird - auf Unix-ähnlichen Plattformen. Der find Befehl wird übrigens oft mit xargs kombiniert.

Für den gleichen Zweck gibt es schnellere und einfachere Werkzeuge - siehe unten. Probieren Sie sie besser aus , sofern sie auf Ihrer Plattform verfügbar sind . Natürlich:

Schnellere und einfachere Alternativen

RipGrep - schnellstes Suchwerkzeug um:

rg 'text-to-find-here' / -l

The Silver Searcher:

ag 'text-to-find-here' / -l

ack:

ack 'text-to-find-here' / -l

Hinweis: Sie können diesen Befehlen auch 2>/dev/null hinzufügen, um viele Fehlermeldungen auszublenden.


Warnung : Wenn Sie dies nicht wirklich vermeiden können, suchen Sie nicht nach '/' (das Stammverzeichnis) um eine lange und ineffiziente Suche zu vermeiden! In den obigen Beispielen sollten Sie '/' durch einen Unterverzeichnisnamen ersetzen, z. "/ home" abhängig davon, wo Sie tatsächlich suchen möchten ...

33
Bludzee

Es gibt ein neues Dienstprogramm namens The Silversearcher

Sudo apt install silversearcher-ag

Es arbeitet eng mit Git und anderen VCS zusammen. Sie erhalten also nichts in einem .git oder einem anderen Verzeichnis.

Sie können einfach verwenden

ag "Search query"

Und es wird die Aufgabe für Sie erledigen!

31
Neil Agarwal

Versuchen:

find . -name "*.txt" | xargs grep -i "text_pattern"
29
venkat

Verwenden Sie pwd, um von jedem Verzeichnis aus zu suchen, in dem Sie sich gerade befinden

grep -rnw `pwd` -e "pattern"

pdate Abhängig von der verwendeten Version von grep können Sie pwd weglassen. In neueren Versionen scheint . der Standardfall für grep zu sein, wenn kein Verzeichnis angegeben ist:

grep -rnw -e "pattern"

oder

grep -rnw "pattern"

mache das gleiche wie oben!

28
mahatmanich

grep kann verwendet werden, auch wenn wir keinen String suchen.

Einfach laufen,

grep -RIl "" .

druckt den Pfad zu allen Textdateien aus, d. h. zu solchen, die nur druckbare Zeichen enthalten.

19
Alex Jasmin

Hier sind einige Befehle aufgelistet, die zum Durchsuchen von Dateien verwendet werden können.

grep "text string to search” directory-path

grep [option] "text string to search” directory-path

grep -r "text string to search” directory-path

grep -r -H "text string to search” directory-path

egrep -R "Word-1|Word-2” directory-path

egrep -w -R "Word-1|Word-2” directory-path
17
Atul Arvind

Ein einfaches find kann praktisch sein. alias es in deiner ~/.bashrc Datei:

alias ffind find / -type f | xargs grep

Starten Sie ein neues Terminal und geben Sie Folgendes aus:

ffind 'text-to-find-here'
15
danglingpointer
find /path -type f -exec grep -l "string" {} \;

Erklärung aus Kommentaren

find ist ein Befehl, mit dem Sie Dateien und andere Objekte wie Verzeichnisse und Verknüpfungen in Unterverzeichnissen eines bestimmten Pfads finden können. Wenn Sie keine Maske angeben, der Dateinamen entsprechen sollen, werden alle Verzeichnisobjekte aufgelistet.

-type f specifies that it should proceed only files, not directories etc.
-exec grep specifies that for every found file, it should run grep command, passing its filename as an argument to it, by replacing {} with the filename
15
Vinod Joshi

Hoffe das ist hilfreich ...

Erweitern Sie das grep ein wenig, um mehr Informationen in der Ausgabe zu erhalten, beispielsweise um die Zeilennummer in der Datei zu erhalten, in der sich der Text befindet.

_find . -type f -name "*.*" -print0 | xargs --null grep --with-filename --line-number --no-messages --color --ignore-case "searthtext"
_

Wenn Sie eine Vorstellung vom Dateityp haben, können Sie die Suche eingrenzen, indem Sie die zu suchenden Dateityperweiterungen angeben. In diesem Fall _.pas_ OR _.dfm_ Dateien:

_find . -type f \( -name "*.pas" -o -name "*.dfm" \) -print0 | xargs --null grep --with-filename --line-number --no-messages --color --ignore-case "searchtext"
_

Kurze Erläuterung der Optionen:

  1. _._ im find gibt aus dem aktuellen Verzeichnis an.
  2. _-name_ "_*.*_": Für alle Dateien (-name "_*.pas_" -o -name "_*.dfm_"): Nur der _*.pas_ OR _*.dfm_ Dateien, OR angegeben mit _-o_
  3. _-type f_ gibt an, dass Sie nach Dateien suchen
  4. _-print0_ und _--null_ auf der anderen Seite des _|_ (Pipe) sind die entscheidenden und übergeben den Dateinamen vom find zum grep, das in der eingebetteten xargs ermöglicht die Übergabe von Dateinamen MIT Leerzeichen in den Dateinamen, sodass grep den Pfad und den Dateinamen als eine Zeichenfolge behandelt und nicht in einzelne Leerzeichen aufteilt.
15
Gert van Biljon

Silver Searcher ist ein großartiges Tool, aber Ripgrep kann noch besser sein.

Es funktioniert unter Linux, Mac und Windows und wurde vor ein paar Monaten auf Hacker News geschrieben (dies hat einen Link zu Andrew Gallants Blog, der einen GitHub-Link hat):

Ripgrep - Ein neues Befehlszeilen-Suchwerkzeug

15
AAAfarmclub

Versuchen:

find / -type f -exec grep -H 'text-to-find-here' {} \;

dadurch werden alle Dateisysteme durchsucht, da / der Stammordner ist.

Für den Heimordner:

find ~/ -type f -exec grep -H 'text-to-find-here' {} \;

Für den aktuellen Ordner verwenden Sie:

find ./ -type f -exec grep -H 'text-to-find-here' {} \;
15
user4863663

Ich habe ein Python-Skript geschrieben, das etwas Ähnliches tut. So sollte man dieses Skript verwenden.

./sniff.py path pattern_to_search [file_pattern]

Das erste Argument, path, ist das Verzeichnis, in dem wir rekursiv suchen. Das zweite Argument, pattern_to_search, ist ein regulärer Ausdruck, den wir in einer Datei suchen möchten. Wir verwenden das reguläre Ausdrucksformat, das in der Bibliothek Pythonre definiert ist. In diesem Skript stimmt der . auch mit Newline überein.

Das dritte Argument, file_pattern, ist optional. Dies ist ein weiterer regulärer Ausdruck, der mit einem Dateinamen arbeitet. Es werden nur die Dateien berücksichtigt, die diesem regulären Ausdruck entsprechen.

Wenn ich zum Beispiel nach Python Dateien mit der Erweiterung py suchen möchte, die Pool( gefolgt von Word Adaptor enthält, gehe ich folgendermaßen vor:

./sniff.py . "Pool(.*?Adaptor"  .*py
./Demos/snippets/cubeMeshSigNeur.py:146 
./Demos/snippets/testSigNeur.py:259 
./python/moose/multiscale/core/mumbl.py:206 
./Demos/snippets/multiComptSigNeur.py:268 

Und voila generiert den Pfad der übereinstimmenden Dateien und die Zeilennummer, in der die Übereinstimmung gefunden wurde. Wenn mehr als eine Übereinstimmung gefunden wurde, wird jede Zeilennummer an den Dateinamen angehängt.

14
Dilawar

grep ist dein guter Freund, um dies zu erreichen.

grep -r <text_fo_find> <directory>

wenn Sie sich nicht für den zu findenden Text interessieren, verwenden Sie

grep -ir <text_to_find> <directory>
13
Prash

Verwenden:

grep -c Your_Pattern *

Dies gibt an, wie viele Kopien Ihres Musters sich in jeder der Dateien im aktuellen Verzeichnis befinden.

13
Dr_Hope

So suchen Sie nach der Zeichenfolge und geben nur diese Zeile mit der Suchzeichenfolge aus:

for i in $(find /path/of/target/directory -type f); do grep -i "the string to look for" "$i"; done

z.B.:

for i in $(find /usr/share/applications -type f); \
do grep -i "web browser" "$i"; done

So zeigen Sie den Dateinamen an, der die Suchzeichenfolge enthält:

for i in $(find /path/of/target/directory -type f); do if grep -i "the string to look for" "$i" > /dev/null; then echo "$i"; fi; done;

z.B.:

for i in $(find /usr/share/applications -type f); \
do if grep -i "web browser" "$i" > /dev/null; then echo "$i"; \
fi; done;
12
user3124504

Es gibt ein ack Tool, das genau das macht, wonach Sie suchen.

http://linux.die.net/man/1/ack

ack -i search_string folder_path/*

Sie können -i bei der Suche nach Groß- und Kleinschreibung ignorieren

12
Pal

Alle vorherigen Antworten schlagen grep und find vor. Aber es gibt noch einen anderen Weg: Verwenden Sie Midnight Commander

Es ist ein kostenloses Dienstprogramm (30 Jahre alt, nachweislich), das visuell ist, ohne GUI zu sein. Es hat Unmengen von Funktionen, und das Auffinden von Dateien ist nur eine davon.

11
Peter M.

Der folgende Befehl funktioniert gut für diesen Ansatz:

find ./ -name "file_pattern_name"  -exec grep -r "pattern" {} \;
10
Pradeep Goswami

Versuche dies:

find . | xargs grep 'Word' -sl
10
Tayab Hussain

Wenn Sie find unbedingt verwenden möchten, dann:

_find /path/to/somewhere/ -type f -exec grep -nw 'textPattern' {} \;_

find + grep

1. Verwenden Sie find, um nach Dateien zu suchen. 2. Führen Sie dann grep für alle aus.

Kann wie folgt in einem Befehl kombiniert werden:

_find /path/to/somewhere/ -type f -exec grep -nw 'textPattern' {} \;_

  • Verwenden Sie _-name Pattern_, wenn Sie nur bestimmte Dateien grep möchten:

    _find /path/to/somewhere/ -type f -name \*.cpp -exec grep -nw 'textPattern' {} \;_

Dies gibt Ihnen die Möglichkeit, mit find Dateien zu finden. Sie können damit spielen und verschiedene Optionen von find verwenden, um Ihre Dateisuche zu verbessern oder einzugrenzen.

10
BreakBadSP

Ich bin fasziniert, wie einfach grep es mit 'rl' macht

grep -rl 'pattern_to_find' /path/where/to/find

-r to find recursively file / directory inside directories..
-l to list files matching the 'pattern'

Verwenden Sie '-r' ohne 'l', um die Dateinamen gefolgt von Text anzuzeigen, in dem sich das Muster befindet !

grep -r 'pattern_to_find' /path/where/to/find

Funktioniert einfach perfekt ..

Ich hoffe es hilft!

10
nitinr708

Sie können den folgenden Befehl verwenden, da Sie keinen Dateinamen möchten, aber alle Dateien durchsuchen möchten. Hier erfasse ich das "TEXT" -Formular. Alle Protokolldateien stellen sicher, dass der Dateiname nicht gedruckt wird

grep -e TEXT *.log | cut -d' ' --complement -s -f1

die Option grep with -e ist im Vergleich zu anderen Optionen ziemlich schnell, da es sich um eine PATTERN-Übereinstimmung handelt

10
Mitul Patel

Vermeiden Sie den Ärger und installieren Sie ack-grep. Es werden viele Probleme mit Berechtigungen und Zitaten beseitigt.

apt-get install ack-grep

Gehen Sie dann zu dem Verzeichnis, in dem Sie suchen möchten, und führen Sie den folgenden Befehl aus

cd /
ack-grep "find my keyword"
10
Kareem

find mit xargs wird bevorzugt, wenn es viele mögliche Übereinstimmungen gibt, die gesichtet werden müssen. Es läuft langsamer als andere Optionen, funktioniert aber immer. Wie einige festgestellt haben, verarbeitet xargs standardmäßig keine Dateien mit eingebetteten Leerzeichen. Sie können dies umgehen, indem Sie die Option -d angeben.

Hier ist die Antwort von @ RobEarl, die so erweitert wurde, dass sie Dateien mit Leerzeichen verarbeitet:

find / -type f | xargs -d '\n' grep 'text-to-find-here'

Hier ist die Antwort von @ venkat, ähnlich verbessert:

find . -name "*.txt" | xargs -d '\n' grep -i "text_pattern"

Hier ist @Gert van Biljons Antwort, ähnlich verbessert:

find . -type f -name "*.*" -print0 | xargs -d '\n' --null grep --with-filename --line-number --no-messages --color --ignore-case "searthtext"

Hier ist die Antwort von @ LetalProgrammer, ähnlich verbessert:

alias ffind find / -type f | xargs -d '\n' grep

Hier ist die Antwort von @Tayab Hussain, ähnlich verbessert:

find . | xargs -d '\n' grep 'Word' -sl
7
Mike Slinn

Wenn Sie eine Reihe von Dateien haben, die Sie immer überprüfen, können Sie deren Pfade aliasen, zum Beispiel:

alias fd='find . -type f -regex ".*\.\(inc\|info\|module\|php\|test\|install\|uninstall\)"'

Dann können Sie die Liste einfach so filtern:

grep -U -l $'\015' $(fd)

Welche filtert die Liste fd auf Dateien, die das CR-Muster enthalten.

Ich finde, dass das Aliasing der Dateien, an denen ich interessiert bin, mir hilft, einfachere Skripte zu erstellen, als mich immer daran zu erinnern, wie all diese Dateien abgerufen werden können. Das rekursive Zeug funktioniert auch, aber früher oder später müssen Sie sich mit dem Aussortieren bestimmter Dateitypen herumschlagen. Deshalb finde ich zunächst alle Dateitypen, die mich interessieren.

7
dkinzer

Versuche dies:

find / -type f -name "*" -exec grep -il "String_to_search" {} \;

Oder

for i in /*;do grep -Ril "String_to_search" $i;done 2> /dev/null
7
VIPIN KUMAR

Verwenden:

grep -Erni + "text you wanna search"

Der Befehl durchsucht alle Dateien und Verzeichnisse des aktuellen Verzeichnisses rekursiv und gibt das Ergebnis aus.

Hinweis: Wenn Ihre grep-Ausgabe nicht farbig ist, können Sie sie mithilfe des Alias ​​grep = 'grep --color = always' in Ihrer Shell-Quelldatei ändern.

7
baldash

Mit den folgenden Befehlen können Sie bestimmten Text aus einer Datei suchen:

cat file | grep 'abc' | cut -d':' -f2
7
iamjayp

Als Peter in der vorherigen Antwort erwähnt , schlagen alle vorherigen Antworten grep und find vor.

Aber es gibt eine ausgefeiltere Möglichkeit, Gnome Commander mit einem perfekten GUI und mit Tonnen von Optionen seit 2001 zu verwenden, und Dateien zu finden ist nur einer von ihnen. Es ist auch ein kostenloses Dienstprogramm, das sich durch seine Zeit bewährt hat.

7
Geeocode

Versuche dies

find . -type f -name some_file_name.xml -exec grep -H PUT_YOUR_STRING_HERE {} \;
6

Siehe auch The Platinum Searcher , was The Silver Searcher ähnelt und in Go geschrieben ist.

Beispiel:

pt -e 'text to search'
5
Gustavo Paulo

GUI-Suchalternative - Zur Verwendung auf dem Desktop:

- Da die Frage nicht genau nach Befehlen fragt

Searchmonkey : Erweitertes Dateisuchwerkzeug, ohne dass Sie Ihr System mit regulären Ausdrücken indizieren müssen. Grafisches Äquivalent zu find/grep. Verfügbar für Linux (Gnome/KDE/Java) und Windows (Java) - Open Source GPL v3

Funktionen:

  • Erweiterte reguläre Ausdrücke
  • Ergebnisse im Kontext angezeigt
  • Suche mit Text
  • Bedienfeld zur Anzeige einer Zeile mit Text
  • Neue Updates für 2018
  • usw.

Download - Links:

.

Screenshot:

Enter image description here

5
intika

ihr Befehl ist richtig. Müssen nur -l zu grep hinzufügen.

find / -type f -exec grep -l 'text-to-find-here' {} \;
1
FariZ