Dieses Tutorial führt Sie durch die verschiedenen Möglichkeiten, ein Verzeichnis in Linux zu finden. Wie Sie vielleicht bereits wissen, ist unter Linux alles eine Datei, einschließlich Verzeichnisse. Und eines der häufigsten Dinge, die ein Linux-Benutzer in der Befehlszeile tut, ist die Suche nach einer Datei oder einem Verzeichnis.
Es gibt verschiedene Mittel und Dienstprogramme, die für die Suche nach Dateien in der Befehlszeile verwendet werden, z. B. find, locate und welche . Das letzte Dienstprogramm (welches ) wird nur zum Auffinden eines Befehls verwendet.
Für den Umfang dieses Tutorials konzentrieren wir uns hauptsächlich auf das Find-Dienstprogramm, das Dateien in einem Live-Linux-Dateisystem durchsucht und im Vergleich zu locate effizienter und zuverlässiger ist .
Der Nachteil von locate ist, dass es eine oder mehrere Datenbanken liest, die von updatedb erstellt wurden , es durchsucht kein Live-Dateisystem. Außerdem bietet es nicht so viel Flexibilität hinsichtlich des Ausgangspunkts der Suche (Startpunkt).
Unten ist die Syntax zum Ausführen von locate Befehl:
# locate [option] [search-pattern]
Um den Nachteil von locate zu demonstrieren , nehmen wir an, wir suchen nach einem Verzeichnis namens pkg
im aktuellen Arbeitsverzeichnis.
Hinweis :Im folgenden Befehl ist die Option --basename
oder -b
sagt lokalisieren nur mit dem Basisnamen der Datei (Verzeichnis) übereinstimmen (der genau pkg ist ), aber nicht der Pfad (/path/to/pkg ). Wobei \
ein Globbing-Zeichen ist, deaktiviert es die implizite Ersetzung von pkg von *pkg* .
$ locate --basename '\pkg'
Wie Sie der obigen Befehlsausgabe entnehmen können, locate sucht ab der Wurzel (/) Verzeichnis, deshalb werden andere Verzeichnisse mit dem gleichen Namen abgeglichen.
Um dieses Problem zu lösen, verwenden Sie daher find indem Sie der folgenden vereinfachten Syntax folgen:
$ find starting-point options [expression]
Sehen wir uns einige Beispiele an.
Um nach demselben Verzeichnis zu suchen (pkg)
Führen Sie oben im aktuellen Arbeitsverzeichnis den folgenden Befehl aus, wobei -name
Flag liest den Ausdruck, der in diesem Fall der Basisname des Verzeichnisses ist.
$ find . -name "pkg"
Wenn Sie auf „Berechtigung verweigert stoßen ” Fehler, verwenden Sie den sudo-Befehl wie folgt:
$ sudo find . -name "pkg"
Sie können verhindern, dass find nach anderen Dateitypen außer Verzeichnissen sucht, indem Sie -type
verwenden Flag, um den Dateityp anzugeben (im Befehl unter d
bedeutet Verzeichnis) wie folgt:
$ sudo find . -type d -name "pkg"
Wenn Sie das Verzeichnis außerdem in einem langen Listenformat auflisten möchten, verwenden Sie den Aktionsschalter -ls
:
$ sudo find . -type d -name "pkg" -ls
Als nächstes die Option -iname
ermöglicht eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung:
$ sudo find . -type d -iname "pkg" $ sudo find . -type d -iname "PKG"
Um weitere interessante und fortgeschrittene Nutzungsinformationen zu finden, lesen Sie die Manpages von find und lokalisieren .
$ man find $ man locate
Als letzte Bemerkung ist der Befehl find zuverlässiger und effizienter für die Suche nach Dateien (oder Verzeichnissen) in einem Linux-System, wenn er gegen locate abgewogen wird Befehl.
Vergessen Sie wie zuvor nicht, uns Ihr Feedback oder Ihre Fragen über den Kommentarbereich unten zu senden. Zu guter Letzt bleiben Sie immer mit Tecmint verbunden .