Frage Wie finde ich ein Verzeichnis auf Linux?


Ich habe ein VPS mit Suse Linux 10.3.

Ich habe mich über angemeldet SSH / Kitt und versuche herauszufinden, wo sich meine Web-Dateien befinden.

Da lade ich per FTP in ein Verzeichnis namens httpdocsIch nehme an, dass dieses Verzeichnis irgendwo existiert.

Meine Google-Suchen haben mich dazu gebracht, dies zu tun, gehen Sie zu meinem Stammverzeichnis und tippen Sie:

find httpdocs -type d

aber es sagt "Datei oder Verzeichnis existiert nicht".

Wie kann ich dieses Verzeichnis finden?


398
2018-06-28 17:51


Ursprung


Falls jemand sich fragt, 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 Fehlermeldung fehl, da kein Verzeichniseintrag vorhanden ist httpdocs im Stammverzeichnis des Systems und daher kein Startpunkt für eine Suche. - Daniel Beck♦


Antworten:


Es ist:

find / -type d -name 'httpdocs'

der erste Parameter "/" ist wo zu suchen, in diesem Fall "/" ist es das gesamte System.

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

Auch -Typ ist nicht zwingend erforderlich

benutzen : Mann finden für mehr Optionen


545
2018-06-28 18:00



finde / -name 'httpdocs' funktioniert super danke - Edward Tanguay
Für einfache Suchvorgänge spielt es keine Rolle, aber für komplexere Suchbefehle sollte beachtet werden, dass die Dinge in der Reihenfolge ausgewertet werden, in der sie in der Befehlszeile stehen. Vielleicht möchten Sie also den -Typ d (nur Verzeichnisse) vor -name haben, um die Dinge zu beschleunigen. Auch dies spielt hier keine Rolle, aber bei komplexeren Suchanfragen kann die Suchgeschwindigkeit erheblich verbessert werden. - Dominic Eidson
Eigentlich -name Test ist schneller als die meisten anderen Tests seit -name wird mit der Liste des Verzeichnisses abgeglichen, die bereits von der Festplatte geladen ist, und die anderen Tests müssen eine durchführen stat(2) um Dateiinformationen zu erhalten. Nach dem ersten stat() Aufruf für eine Datei, eine nachfolgende Tests aus dem Speicher, z. -type f -mtime -10. - Arcege
Wenn Sie eine Suche auf dem gesamten Dateisystem durchführen, insbesondere auf einem Server, ist es normalerweise gut zu verwenden niceDaher benötigt der Fund nicht zu viele Ressourcen aus kritischeren Prozessen: nice find / ... - Arcege
Ich würde 2> / dev / null anhängen, um zu vermeiden, dass meine Suchergebnisse in allen Berechtigungsfehlern versteckt werden. - Jason Yeo


Dieser Befehl sollte Sie bekommen, wonach Sie suchen:

find / -type d -name httpdocs

das wird von der Wurzel des Servers nach Verzeichnissen mit dem Namen von httpdocs suchen oder wenn Sie nur aus dem aktuellen Verzeichnis suchen wollen, ersetzen Sie das '/' durch ein '.'

Ein weiterer Befehl, den Sie ausprobieren können, ist, dass Sie Folgendes tun würden:

locate httpdocs

59
2018-06-28 18:00



locate httpdocs sagt mir "locate: command not found" - Edward Tanguay
Für diejenigen, die den "locate" -Befehl verwenden (vorausgesetzt, dass er in Ihrem System vorhanden ist), stellen Sie sicher, dass die Datenbank, nach der er sucht, auf dem neuesten Stand ist; Normalerweise kümmert sich ein Cron-Job darum. Führen Sie andernfalls "updatedb" (als Root) aus. Führen Sie dann Ihr benötigtes "locate <somefile>" aus. Dies ist notwendig, um kürzlich hinzugefügte Dateien / Verzeichnisse zu finden. - David Ramirez
+1 für Ortung Es ist viel schneller, aber nur wenn der Index aktuell ist. Glücklicherweise ändert etwas wie "httpdocs" den Standort nicht häufig. Wenn Sie vorhaben, wiederholt nach Dateien auf einem Computer zu suchen, ist es die wenigen Minuten wert, die zum Einrichten des aktualisierten B Cron-Jobs benötigt werden. - Doug Harris
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, wenn jeder Benutzer seine eigenen httpdocs mit 100 oder 1000 Dateien hat, ist das Ergebnis, das das OP wünscht, wahrscheinlich verloren. - Jistanidiot
+1 für locate ... Ich behalte meine Datenbank aktualisiert, so dass dieser Befehl sehr nützlich ist ... Tolle Idee. - nicorellius


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

Dadurch werden alle Fehlermeldungen gelöscht, die Sie wahrscheinlich (immer gelesen) erhalten, wenn Sie dies nicht als root-Benutzer tun. Ich würde es auf diese Weise empfehlen.


26
2017-11-08 01:04



Das 2> /dev/null Option ist sehr hilfreich. Sonst kann es schwierig sein, die gewünschten Ergebnisse zu sehen ... - Gottlieb Notschnabel
Siehe auch Wie kann ich alle "permission denied" Nachrichten von "find" ausschließen? - galath


Es ist wichtig, den Parameter -iname zu kennen, um "case insensitive" Muster und die Verwendung von Wildcards zu suchen: *,?, Etc ..

Zwei Beispiele:

Durchsuchen Sie alle Dateien von / root, das die Zeichenfolge "Linux" enthält, ohne Beachtung der Groß- / Kleinschreibung:

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

Durchsuchen Sie alle Verzeichnisse von / root, das die Zeichenfolge "Linux" enthält, ohne Beachtung der Groß- / Kleinschreibung:

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

Von hier extrahiert:

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


10
2017-12-06 23:50



Bei dieser Frage geht es darum, wie Sie ein Verzeichnis finden, dessen Name Sie kennen, und nicht, wie Sie ein Verzeichnis finden, dessen Name Sie (ungefähr) kennen. Außerdem erwähnt die angenommene Antwort (von über 6 Jahren!) Bereits -iname als eine gegen die Groß- / Kleinschreibung unempfindliche Alternative zu -name. - G-Man


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

find / -type d -name httpdocs

Das Verzeichnis ist wahrscheinlich unter /var/www/


9
2018-06-28 18:02



das sagt mir "Wege müssen dem Ausdruck vorausgehen" - Edward Tanguay