Website-Suche

Möglichkeiten, den Befehl „find“ zu verwenden, um Verzeichnisse effizienter zu durchsuchen


Dieses Tutorial führt Sie durch die verschiedenen Möglichkeiten, ein Verzeichnis unter Linux zu finden. Wie Sie vielleicht bereits wissen, ist unter Linux alles eine Datei, einschließlich Verzeichnissen. Und eine der häufigsten Aktionen, die ein Linux-Benutzer in der Befehlszeile durchführt, ist die Suche nach einer Datei oder einem Verzeichnis.

Für die Suche nach Dateien in der Befehlszeile stehen verschiedene Mittel und Dienstprogramme zur Verfügung, z. B. „find“, „locate“ und „which“. Das letzte Dienstprogramm (which) wird jedoch nur zum Auffinden eines Befehls verwendet.

Im Rahmen dieses Tutorials konzentrieren wir uns hauptsächlich auf das Suchdienstprogramm, das Dateien in einem Live-Linux-Dateisystem durchsucht und im Vergleich zu locate effizienter und zuverlässiger ist.

Der Nachteil von locate besteht darin, dass es eine oder mehrere von updatedb erstellte Datenbanken liest und nicht ein Live-Dateisystem durchsucht. Darüber hinaus bietet es keine so große Flexibilität hinsichtlich des Suchorts (Startpunkts).

Nachfolgend finden Sie die Syntax zum Ausführen des Befehls locate:

locate [option] [search-pattern]

Um den Nachteil von locate zu verdeutlichen, gehen wir davon aus, dass wir im aktuellen Arbeitsverzeichnis nach einem Verzeichnis namens pkg suchen.

Hinweis: Im folgenden Befehl weist die Option --basename oder -b locate< an soll nur mit dem Basisnamen der Datei (des Verzeichnisses) übereinstimmen (der genau pkg ist), nicht jedoch mit dem Pfad (/path/to/pkg). Wenn \ ein Globbing-Zeichen ist, wird die implizite Ersetzung von pkg durch *pkg* deaktiviert.

locate --basename '\pkg'

Wie Sie der Befehlsausgabe oben entnehmen können, sucht locate beginnend im Stammverzeichnis (/), weshalb andere Verzeichnisse mit demselben Namen abgeglichen werden.

Um dieses Problem zu lösen, verwenden Sie daher find, indem Sie der folgenden vereinfachten Syntax folgen:

find starting-point options [expression]

Schauen wir uns einige Beispiele an.

Um nach demselben Verzeichnis (pkg) oben im aktuellen Arbeitsverzeichnis zu suchen, führen Sie den folgenden Befehl aus, wobei das Flag -name den Ausdruck liest, der in diesem Fall der ist Verzeichnis-Basisname.

find . -name "pkg"

Wenn Sie auf die Fehlermeldung „Permission denied“ stoßen, verwenden Sie den Befehl sudo wie folgt:

sudo find . -name "pkg"

Sie können verhindern, dass find nach anderen Dateitypen außer Verzeichnissen sucht, indem Sie das Flag -type verwenden, um den Dateityp anzugeben (im folgenden Befehl bedeutet d 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 ermöglicht die Option -iname eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung:

sudo find . -type d -iname "pkg" 
sudo find . -type d -iname "PKG" 

Weitere interessante und erweiterte Nutzungsinformationen finden Sie in den Manpages von find und locate.

man find
man locate

Als letzte Bemerkung ist der Befehl find im Vergleich zum Befehl locate zuverlässiger und effizienter für die Suche nach Dateien (oder Verzeichnissen) in einem Linux-System.

Vergessen Sie nicht, uns wie zuvor Ihr Feedback oder Ihre Fragen über den Kommentarbereich unten zu senden. Bleiben Sie schließlich immer mit Tecmint verbunden.