Dateien und Ordner über SSH suchen
In einigen Fällen müssen Sie den Speicherort einer bestimmten Datei finden oder nach einem bestimmten Text in allen Dateien in einem Verzeichnis suchen. SSH bietet zwei verschiedene Befehle, die dazu verwendet werden können. Um nach einem Dateispeicherort zu suchen, können Sie den Befehl find verwenden. Find ist ein sehr mächtiges Werkzeug und akzeptiert verschiedene Argumente, mit denen Sie den genauen Suchbegriff angeben können (d.h. Suche nach Namen, Typ oder sogar nach geänderten Zeitangaben).
Um beispielsweise nach einer Datei namens myFile.txt unter dem aktuellen Ordner (und allen Unterordnern) zu suchen, müssen Sie den folgenden Befehl verwenden:
find . -name myFile.txt
Wenn Sie sich über den Dateinamen nicht sicher sind oder einen Teil des Namens abgleichen möchten, können Sie ein Wildcard-Muster verwenden:
find . -name "myFile*"
Wenn Sie nur Verzeichnisse auflisten und alle Dateien aus dem Ergebnis herauslassen möchten:
find . -type d
Oder wenn Sie nur Dateien filtern möchten, die in den letzten 2 Tagen geändert wurden, müssen Sie Folgendes verwenden:
find . -mtime -2
Sie können auch nach einem bestimmten Text im Inhalt der Dateien suchen. Der Befehl, den Sie in diesem Fall verwenden sollten, ist grep. Grep ist auch ein mächtiges Werkzeug und akzeptiert verschiedene Kommandozeilen-Argumente. Für eine vollständige Liste empfiehlt es sich, die Anleitungsseite durch man grep anzusehen.
Ein Beispiel für die Verwendung von grep, um einen bestimmten Text zu finden, finden Sie unten:
grep "database" configuration.php
Der obige Befehl weist grep an, in der Datei configuration.php nach der Zeichenkette „database“ zu suchen und die zugehörige Zeile anzuzeigen. Wenn Sie nicht wissen, welche Datei den Text enthält, können Sie Folgendes verwenden:
grep -r -H "database" *
Dies wird grep rekursiv suchen lassen (-r Option) und das Ergebnis in einem vom Menschen lesbaren Format (-H Option) für den String bereitstellen „Datenbank“ in allen (*) Dateien im aktuellen Arbeitsverzeichnis.
Um nur die Dateinamen aufzulisten, die die gesuchte Zeichenkette enthalten, die Zeile mit der Zeichenkette aber wegzulassen, können Sie das Argument -l verwenden:
grep -l "database" *
Dadurch werden die Dateinamen angezeigt, die das Wort “database” enthalten, aber nicht die Zeile, in der sie enthalten ist.
Grep kann auch verwendet werden, um die Ergebnisse anderer Befehle zu filtern. Zum Beispiel wird die folgende Zeile nur das Ergebnis von configuration.php ausgeben:
ls -la | grep configuration.php
In einigen seltenen Fällen können sich find und grep als nicht nützlich erweisen. Um beispielsweise eine bestimmte Datei auf dem gesamten Server zu finden, wäre es am besten, einen alternativen Befehl zu verwenden- whereis oder which :
whereis perl
oder
which perl
Die Ausführung der obigen Kommandos sucht die Perl-Binärdatei und zeigt den vollständigen Pfad zu ihr an.