Wie suche ich nach Zeichenfolgen in Dateien in einem Ordner?


98

Gibt es ein Dienstprogramm, mit dem nach einer Zeichenfolge in ASCII-Dateien gesucht werden kann, um eine Befehlszeilensuche zu vermeiden?

Wie mache ich eine Befehlszeilensuche, zum Beispiel nach der Zeichenfolge "test" in allen Dateien im Verzeichnis /var/x/?


15
Du meinst wirklich ohne Kommandozeile? Weil das beste Werkzeug dafür grep bleibt ...
alci

Auf der CLI macht der Silver Searcher wahrscheinlich einen besseren Job.
Pablo A

Antworten:


78

Sie können searchmonkey verwenden. Das Tool ist in den Repositories verfügbar, sodass Sie es einfach tun können

sudo apt-get install searchmonkey

Andererseits ist die Befehlszeilensuche mit grep wirklich dafür gedacht ...

Hier ist ein Screenshot von searchmonkey

Bildbeschreibung hier eingeben


abgestürzt wegen zu viel Last :(
WiredIn

1
Ich hatte Probleme mit SearchMonkey. Es ist nicht vertrauenswürdig in dem Sinne, dass es viele Vorkommen ausrutscht
Tony Gil

Wie führe ich "searchmonkey" über die GUI aus? Nach der Installation über die Befehlszeile möchte ich lieber nicht die Befehlszeile verwenden
Echeban

153

Ich gehe davon aus, dass es sich bei Ihrer ersten Frage um eine GUI-Alternative zum grepBefehl handelt. Ich kann Ihnen dabei nicht helfen, ich finde die Kommandozeile immer sehr effektiv.

Versuchen Sie es mit der Befehlszeile

grep "test" /var/x/*

Wenn Sie rekursiv suchen möchten (dh nicht nur in /var/x/, sondern auch in Unterverzeichnissen davon), tun Sie dies

grep -R "test" /var/x/

Verwenden Sie die folgende -IOption , um zu vermeiden, dass die von grep als binär empfundenen Dateien abgefangen werden :

grep -I "test" /var/x/

Wenn grep glaubt, dass eine Datei binär ist (basierend auf den ersten Bytes der Datei), wird davon ausgegangen, dass sie nicht übereinstimmt, anstatt die gesamte Datei zu durchsuchen.


1
Funktioniert es, wenn der Ordner Nicht-ASCII-Dateien enthält?
Anwar

1
Nun, grep wird auch versuchen , in einer Binärdatei für die Zeichenfolge suchen und melden Sie es , wenn es passt:Binary file file.jpg matches
Januar

1
@Januar Wenn eine Binärdatei als Text gelesen wird, enthält sie häufig extrem lange "Zeilen" (da ein Zeichen oder eine Zeichenfolge, die als Zeilenende interpretiert wird, möglicherweise nicht lange oder nie angezeigt wird). Je nach Art und Weise ein Textsuchprogramm umgesetzt werden, könnte dies zu Leistungsproblemen führen , wenn jede „Zeile“ vollständig in dem Speicher eingelesen und dann geprüft , um festzustellen , ob sie den Suchbegriff übereinstimmt (die für eine vernünftige Art und Weise ist grepcodiert werden, obwohl ich Ich weiß nicht, ob Ubuntu grepso geschrieben ist.
Eliah Kagan

1
"grep -i" für Suche ohne
Berücksichtigung der

3
*Nach dem letzten Schrägstrich sollte es einen geben, oder grep scheint am 14.04.
Keine

20

Sie können regexxer verwenden, es ist ein großartiges GUI-Such- / Ersetztool für reguläre Ausdrücke.

Sie können herunterladen von:

sudo apt-get install regexxer

Bildbeschreibung hier eingeben


es ist super schnell, aber die Probleme, die ich mit dieser Anwendung habe, sind: 1. es hat keinen schreibgeschützten Modus, so dass ich nichts versehentlich ersetze oder lösche 2. es zeigt den Text, aber es wird nicht zu dem bestimmten verschoben Linie, zu der das Muster passt. (Ich habe ungefähr 2000 Codezeilen gescrollt, um herauszufinden, wonach ich
gesucht habe,

6

Versuchen Sie Recoll, die beste GUI, die ich je benutzt habe. Um recoll in allen derzeit unterstützten Versionen von Ubuntu zu installieren, öffnen Sie das Terminal und geben Sie Folgendes ein:

sudo apt install recoll

Es dauert einige Zeit, bis die Dateien zuerst indiziert sind (Sie können den Pfad der Blacklist, die Erweiterungen oder MIME definieren).


Ich kann bestätigen, dass Recoll in Bezug auf gnome-search-tooloder eine völlig andere Welt ist search-monkey. Da Xapian verwendet wird, können Word-Dokumente (.doc und .docx), PDF-Dateien, E-Mail-Ordner usw. eingesehen und indiziert werden.
Avio

Äh, es ist über deb packaging ( sudo apt install recoll) verfügbar und erledigt seine Aufgabe, wenn sogar grep fehlschlägt, z. B. bei .docx-Dokumenten, die mit pkzip-Komprimierung komprimiert wurden.
Avio

Beachten Sie, dass zuerst recollein Index erstellt werden muss.
Yrogirg

5

Sie können den grepBefehl vom Terminal aus verwenden:

grep -r string *

Dieser Befehl findet alle Vorkommen von "string" in allen Dateien im aktuellen Verzeichnis (oder in den Unterverzeichnissen).

Für versteckte Dateien können Sie Folgendes verwenden:

grep -r string ..


2

Leider kann grep nur sehr schlecht in Word-Dateien (.doc) suchen, aber Sie können die catdoc-Ausgabe in grep umleiten. Ich bin kein Programmierer, aber dieses kleine Skript funktioniert gut für mich:

#!/bin/bash
export GREP_OPTIONS='--color=auto'
echo -e "\n
Welcome to scandocs. This will search .doc (NOT .docx) files in this directory for a given string. \n
Type in the text string you want to find... \n"
read response
find . -name "*.doc" | 
while read i; do catdoc "$i" | 
grep -iH --label="$i" "$response"; done

Alle Verbesserungen und Vorschläge sind willkommen!


1
Bei dieser Frage ging es um grafische Anwendungen und reine Textdateien. Ich bin mir nicht sicher was grepund .dochabe mit der Frage zu tun.
Andrea Corbellini

Scheint in Ordnung, siehe Januar ausführliche Antwort über grep.
Aquaherd

2

Ich habe gerade ein einfaches Tool veröffentlicht, um die Arbeit zu erledigen. Hauptsächlich für Softwareentwickler gedacht, hat es die (einzigartige?) Eigenschaft, mehrere Dateien im selben Fenster zu öffnen. Die Ergebnisse werden im Browser im Ace-Editor (empfohlen!) Oder im HTML-Textbereich angezeigt. Es ist ein Java-basiertes Tool, das sowohl unter Windows als auch unter Linux ausgeführt wird.

Hör zu!

https://sourceforge.net/projects/queacetu.gastona.p/


1

per https://askubuntu.com/a/1141367/47073

Sie können verwenden mate-search-tool, was das gleiche ist wie das gnome-search-tool, was entfernt wurde. Ich hatte Probleme mit searchmonkey, es fehlten einige Ergebnisse und es war langsam, nicht zu empfehlen.

So installieren Sie mate-search-tool:

sudo apt install mate-utils
mate-search-tool

0

Sie können die Option Sublime Text Find in Files aus dem FindMenü verwenden, um nach Zeichenfolgen in Dateien aus einem Ordner zu suchen.

So installieren Sie Sublime Text 3

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

Sie können dieser Frage auch nachgehen , um Sublime unter Ubuntu zu installieren .

Um in allen Dateien nach einer Zeichenfolge aus einem Ordner in Sublime Text zu suchen , können Sie dieser Frage folgen , um klarere Antworten zu erhalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.