• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Abbruch der Suche mit grep

jobu0101

Newbie
Hallo und frohe Weihnacht!

Ich habe gerade eine Suchanfrage (meine erste) mit grep gestartet. Wollte ein Verzeichnis finden, dessen Namen ich kenne. Habe dazu einfach
grep verzeichnisname
eingegeben. Das war wohl keine gute Idee, denn es passierte nichts. Der Cursor sprang einfach in die nächste Zeile und dort kann ich nun eingeben, was ich will. Kann dort keine Befehle mehr ausführen, da das wohl alles noch zu grep gehört. Könnt ihr mir erklären, was passiert ist und wie ich da raus komme?

Danke!
 

framp

Moderator
Teammitglied
jobu0101 schrieb:
... Ich habe gerade eine Suchanfrage (meine erste) mit grep gestartet. Wollte ein Verzeichnis finden, dessen Namen ich kenne...
Grep ist zum Fiunden von Inhalten in Dateien. Wenn Du Dateien finden willst musst Du find nehmen.
 
A

Anonymous

Gast
jobu0101 schrieb:
Wieso kommt man da nicht automatisch durch Enter-Druck raus?
So wie du es geschrieben hast durchsucht grep die Standardeingabe (also das was du auf der Tastatur eingibst nach dach dem Zeichensatz "verzeichnisname") und das Zeilenweise. Ein Enter bedeutet dabei Zeile ist zu Ende. Gibst du dort jetzt nichts ein, dann bleibt der Befehl stehen, gibst du nur immer Enter ein, dann durchsucht grep nur leere Zeile.

2 der Möglichkeiten da wieder herauszukommen. STRG +C das ist das Zeichen für die Bash den Befehl abzubrechen oder STRG +D das ist das Zeichen das die Bash als Dateiende interpretiert. (damit würde grep das Signal erhalten hier ist die Datei fertig die du durchsuchen sollst)

Ansonsten bei grep im einfachsten Fall immer " grep SUCHMUSTER DATEI" wobei du bei DATEI auch mehrere angeben kannst oder der Shell durch Platzhalter anzeigen kannst, das sie dort mehrere einsetzen soll. zum Beispiel durch "*.txt" als Dateiname. Da setzt die shell alle Dateien die im aktuellen verzeichnis auf ".txt" enden, hin.

robi
 
OP
J

jobu0101

Newbie
Ich will ja in meinem Fall einen Ordner und keine Datei suchen. Lässt sich das auch mit grep durchführen oder ist da eventuell ein anderer Befehl sinnvoller? Ich brauche ja auch kein Suchmuster, da ich den Ordnernamen kenne.
 
A

Anonymous

Gast
Was du suchst ist wahrscheinlich so was hier
Code:
find -type d -name verzeichnisname
Das durchsucht recursiv deinen Verzeichnisbaum ab der aktuellen Position, interessiert sich dabei nur nach Verzeichnissen und sucht einen Namen "verzeichnisname" . Als Ergebnisse sollte alle solchen Verzeichnisse mit diesem Namen erscheinen.

robi
 
Alternativ dazu kann man 'locate' nutzen (zu installieren über das Paket 'findutils-locate', bei SuSE leider nicht per default dabei), das nutzt eine Datenbank, und ist dadurch wesentlich schneller. Nach der Installation des Pakets muss man als root das Kommando

Code:
updatedb

ausführen, damit diese Datenbank erstellt wird. Die Syntax von 'locate' ist sehr einfach:

Code:
locate irgendeinname

...es können auch wildcards verwendet werden.

'locate' eignet sich vor allem, wenn Dateien / Ordner gesucht werden, die permanent oder zumindest schon seit 'ner Weile auf dem System sind, da die Datenbank nur alle 24 Stunden aufgefrischt wird. Ansonsten verwendet man, wie hier vorgeschlagen, 'find'.
 
OP
J

jobu0101

Newbie
robi schrieb:
Was du suchst ist wahrscheinlich so was hier
Code:
find -type d -name verzeichnisname
Das durchsucht recursiv deinen Verzeichnisbaum ab der aktuellen Position, interessiert sich dabei nur nach Verzeichnissen und sucht einen Namen "verzeichnisname" . Als Ergebnisse sollte alle solchen Verzeichnisse mit diesem Namen erscheinen.

robi

Danke, das hat funktioniert.
 
Oben