Zum Inhalt springen

Befehl "Baustein in einer Datei suchen"


Empfohlene Beiträge

Geschrieben

Hallo,

ich verzweifle gerade

Es muss doch eine Möglichkeit geben "find" mitzuteilen das er alle Dateien durchsuchen soll nach einem bestimmten Muster.

Gut das dürfte etwas dauern, ist mir in diesem Fall aber egal ;)

Ich habe folgendes Problem:

Im Ordner

/blaa/blub/*/*/*//**/*

Ist irgendwo eine Datei mit Inhalt wo ein Auschnitt "/tmp/mysql.sock" zu finden ist.

Das dumme ist, der Ordner hat noch zig Unterornder, also viel zu viele Dateien um das manuell zu durchsuchen.

Es muss doch irgendwo ein fertiges Script oder ein passender Parameter für find geben. So ein Problem habe doch nicht nur ich gehabt bis jetzt?

gruß Jens

Geschrieben

find /blaa/blub/ -type f -exec grep /tmp/mysql.sock '{}' \;

Unklug weil: Langsam

So wird für jede einzelne Datei einem grep aufgerufen und ein Subprozess erzeugt...das kostet unglaublich viel Zeit. Such damit mal über ein paar hundert GB...

find . | grep "abcd" *

oder

find . | xargs grep "abcd" (falls es sehr viele Dateien sind)

Nur 2 ist unklug weil: Siehe tequilaboy

Nur 1 ist unklug weil: grep würde sowohl vom stdin lesen (also das von grep) und außerdem alle Dateien im aktuellen Verzeichnis lesen (weil die Shell den Stern vor dem Aufruf von grep erweitern würde).

---

Die vernünftige Lösung sähe so aus:

find <path> -type f -name "mysql.sock" | grep "/tmp/mysql.sock"

Ist besser, weil grep ausschließlich für Pfade aufgerufen wird, in den ohnehin schon "mysql.sock" vorkommt (damit fallen 98% aller Dateien raus) und find außerdem find alle Ordner gleich überspringt (das ist sehr schnell).

Oder, falls du eine find Version hast die diese Parameter unterstützt (meine hier tut es nicht, der Parameter scheint relativ neu zu sein):

find <path> -type f -wholename "/tmp/mysql.sock"

Geschrieben

Hi,

@Whatever

Danke für den Perfomance Tipp. werde ich dran denken wenn ich mal die besagten Datenmengen duchsuchen muss. War mir so nicht bewusst...

Was mir jetzt nicht ganz klar ist ob der Dateiname auch mysql.sock enthält oder ob dieser String nur innerhalb einer beliebigen Datei steht. Aber -uLtrA- scheint ja zufrieden zu sein ^^

cu

Geschrieben

Wenn die Datei den String direkt im Namen hat geht es natürlich erheblich schneller (also nach dem Dateinamen suchen)

Wenn er nach dem Inhalt der Dateien sucht wird man um ein grep auf jede einzelne Datei nicht umherkommen. Langsam ist das auf jeden Fall.

Geschrieben
"find" braucht man nicht. grep kann das auch so:

grep -r Suchtext *

z.b. durchsucht alle Dateien und Unterordner nach dem Suchtext.

Grep "kann" das nicht so, denn grep bekommt von dem Stern überhaupt nichts mit. Der Stern wird von jeder Shell(!) expandiert und durch alles Dateien und Ordner des aktuellen Verzeichnisses ersetzt, bevor grep ausgeführt wird. Versteckte Dateien und Dateien/Odner in Unterordner stehen da nicht mit drin.

Geschrieben
Grep "kann" das nicht so, denn grep bekommt von dem Stern überhaupt nichts mit. Der Stern wird von jeder Shell(!) expandiert und durch alles Dateien und Ordner des aktuellen Verzeichnisses ersetzt, bevor grep ausgeführt wird. Versteckte Dateien und Dateien/Odner in Unterordner stehen da nicht mit drin.
Das stimmt so nicht. Unterordner werden durchsucht mit "-r". Versteckte Dateien weiß ich grad nicht.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...