Wie finde ich ein Verzeichnis unter Linux?


453

Ich habe einen VPS mit Suse Linux 10.3 .

Ich habe mich über SSH / Putty angemeldet und versuche herauszufinden, wo sich meine Webdateien befinden.

Da ich über FTP in ein Verzeichnis namens httpdocs hochlade , gehe ich davon aus, dass dieses Verzeichnis irgendwo existiert.

Meine Google-Suche hat mir das beigebracht. Gehen Sie in mein Stammverzeichnis und geben Sie Folgendes ein:

find httpdocs -type d

aber es heißt " Keine solche Datei oder Verzeichnis ".

Wie finde ich dieses Verzeichnis?


4
Falls sich jemand wundert, findet der Befehl in der Frage alle Verzeichnisse ( -type d) im Verzeichniseintrag httpdocs(relativ zum aktuellen Arbeitsverzeichnis, normalerweise aber nicht unbedingt ein Verzeichnis). Es schlägt mit einer Fehlermeldung fehl, da sich kein Verzeichniseintrag httpdocsim Stammverzeichnis des Systems befindet und daher kein Ausgangspunkt für eine Suche vorhanden ist.
Daniel Beck

Antworten:


609

Es ist:

find / -type d -name 'httpdocs'

Der erste Parameter "/" ist der Ort, an dem gesucht werden soll, in diesem Fall "/" das gesamte System.

-name könnte -iname sein, um Groß- und Kleinschreibung zu ignorieren

auch -typ ist nicht zwingend erforderlich

verwendung: mann finde für mehr optionen


2
find / -name 'httpdocs' funktioniert super danke
Edward Tanguay

91
Bei einfachen Suchvorgängen spielt es möglicherweise keine Rolle, bei komplexeren Suchbefehlen sollte jedoch beachtet werden, dass die Dinge in der Reihenfolge ausgewertet werden, in der sie sich in der Befehlszeile befinden. Vielleicht möchten Sie also den -type d (nur Verzeichnisse) vor -name haben, um die Dinge zu beschleunigen. Auch hier spielt dies möglicherweise keine große Rolle, aber wenn Sie sich mit komplexeren Suchvorgängen befassen, kann dies die Suchgeschwindigkeit erheblich verbessern.
Dominic Eidson

14
Tatsächlich ist der -nameTest schneller als die meisten anderen Tests, da er -namemit der Liste des Verzeichnisses abgeglichen wird, das bereits von der Festplatte geladen wurde, und die anderen Tests müssen a ausführen stat(2), um Dateiinformationen abzurufen. Nach dem ersten stat()Aufruf einer Datei werden nachfolgende Tests aus dem Speicher abgerufen, z -type f -mtime -10.
Arcege

24
Wenn Sie eine Suche auf dem gesamten Dateisystem durchführen möchten, insbesondere auf einem Server, ist dies in der Regel sinnvoll, nicedamit die Suche nicht zu viele Ressourcen für kritischere Prozesse nice find / ...
beansprucht

16
Ich würde 2> / dev / null anhängen, um zu vermeiden, dass meine Suchergebnisse in allen Berechtigungsfehlern ausgeblendet werden.
Jason Yeo

63

Mit diesem Befehl erhalten Sie, wonach Sie suchen:

find / -type d -name httpdocs

Damit wird im Stammverzeichnis Ihres Servers nach Verzeichnissen mit dem Namen httpdocs gesucht. Wenn Sie nur im aktuellen Verzeichnis suchen möchten, ersetzen Sie das '/' durch ein '.'

Ein anderer Befehl, den Sie ausprobieren können, ist, herauszufinden, was Sie tun würden:

locate httpdocs

locate httpdocs sagt mir "locate: Befehl nicht gefunden"
Edward Tanguay

4
Stellen Sie bei Verwendung des Befehls "locate" (vorausgesetzt, er ist in Ihrem System vorhanden) sicher, dass die gesuchte Datenbank auf dem neuesten Stand ist. normalerweise kümmert sich ein cron job darum. Andernfalls führen Sie "updatedb" aus (als root). Führen Sie dann das benötigte "locate <somefile>" aus. Dies ist erforderlich, um kürzlich hinzugefügte Dateien / Verzeichnisse zu finden.
David Ramirez

+1 für locate. Es ist viel schneller, aber nur, wenn der Index aktuell ist. Glücklicherweise wird so etwas wie "httpdocs" den Speicherort nicht häufig ändern. Wenn Sie vorhaben, wiederholt auf einem Computer nach Dateien zu suchen, lohnt es sich, die wenigen Minuten zum Einrichten des aktualisierten Cron-Jobs zu verwenden.
Doug Harris

1
In vielen Fällen gibt locate auch zu viele Ergebnisse zurück, da alle 100k-Dateien in diesem Verzeichnis angezeigt werden. In diesem speziellen Fall geht wahrscheinlich das vom OP gewünschte Ergebnis verloren, wenn jeder Benutzer seine eigenen httpdocs mit 100 oder 1000 Dateien hat.
Jistanidiot

+1 für locate ... Ich halte meine Datenbank auf dem neuesten Stand, so dass dieser Befehl sehr nützlich ist ... Tolle Idee.
Nicorellius

27
find / -type d -name httpdocs 2> /dev/null

Auf diese Weise werden alle Fehlermeldungen beseitigt, die Sie wahrscheinlich (gelesen, immer) erhalten, wenn Sie dies nicht als Root-Benutzer tun. Würde es auf diese Weise empfehlen.


2
Die 2> /dev/nullOption ist sehr hilfreich. Andernfalls kann es schwierig sein, die gewünschten Ergebnisse zu sehen ...
Gottlieb Notschnabel


13

Es ist wichtig, den Parameter -iname zu kennen, um nach "case insensitiven" Mustern zu suchen und Wildcards zu verwenden: *,?, Etc ..

Zwei Beispiele:

Durchsuchen Sie alle Dateien in / root, die die Zeichenfolge "Linux" enthalten, wobei die Groß- und Kleinschreibung nicht beachtet wird:

find  /root -type f -iname "*linux*"

Durchsuchen Sie alle Verzeichnisse in / root, die die Zeichenfolge "Linux" enthalten, wobei die Groß- und Kleinschreibung nicht beachtet wird:

find  /root -type d -iname "*linux*"

Auszug aus hier:

http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con-find.html


In dieser Frage geht es darum, wie Sie ein Verzeichnis finden, dessen Namen Sie kennen, und nicht wie Sie ein Verzeichnis finden, dessen Namen Sie kennen (ungefähr). Außerdem wird in der akzeptierten Antwort (von vor über 6 Jahren!) Bereits von -inameeiner Alternative gesprochen, bei der die Groß- und Kleinschreibung nicht berücksichtigt wird -name.
G-Man

9

Du hast es fast geschafft. Die korrekte Syntax wäre:

find / -type d -name httpdocs

Das Verzeichnis ist wahrscheinlich unter /var/www/


das sagt mir, "Pfade müssen Ausdruck vorangehen"
Edward Tanguay
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.