Möglicherweise müssen Sie ein Verzeichnis in Ihrem Linux-basierten Betriebssystem finden, und Sie leiden, weil Sie den tatsächlichen Befehl nicht kennen, um den Speicherort verschiedener Dateien zu finden, die auf Ihrem Linux-basierten Betriebssystem vorhanden sind. Zu diesem Zweck wird der Linux-Befehl find directory verwendet.
Der Find-Befehl wird verwendet, um nach dem Speicherort von Dateien sowohl in Unix- als auch in Linux-basierten Systemen zu suchen. Der find-Befehl ist im „findutils“-Paket enthalten und in allen Linux-Distributionen vorhanden. Sie können nach Verzeichnissen und Dateien suchen, während Sie zahlreiche Bedingungen anwenden. Die Aktion wird gemäß Ihren angewendeten Bedingungen durchgeführt, die sich auf das Ergebnis auswirken.
Einführung in den Linux-Befehl Verzeichnis suchen
Die einfachste Form des Find-Befehls ist gegeben durch:
find [paths] [expression] [actions]
Die anderen Formen des Find-Befehls werden so angegeben, dass bei der Ausführung des Find-Befehls in jedem Pfad nach Verzeichnissen und Dateien gesucht wird. Sobald es ein Verzeichnis im angegebenen Pfad findet, beginnt es mit der Suche nach anderen Dateien und Verzeichnissen im selben Pfad. Dieser Prozess hört nicht auf, bis Sie nach allen Dateien in Ihrem angegebenen Pfad gesucht haben.
find /where/to/look/up criteria action find /dir/path/look/up criteria action find /dir/path/look/up -name "name-of-dir" find /dir/path/look/up -name "pattern" find /dir/path/look/up -name "name-of-dir" -print find /dir/path/look/up -name "name-of-dir" find / -name "name-of-dir" find / -type d -name "name-of-dir" find / -type d -name "name-of-dir" 2>/dev/null
Alle Verzeichnisse und Dateien durchsuchen
Wenn Sie die Liste aller Dateien und Verzeichnisse aus Ihrem angegebenen Pfad wünschen, können Sie dies tun, indem Sie den Pfad angeben. Wenn Sie beispielsweise eine Liste aller Dateien aus dem Pfad usr/share wünschen, können Sie den folgenden Befehl verwenden:
find /usr/share
Wenn Sie Dateien aus mehr als einem Verzeichnis gleichzeitig auflisten möchten, können Sie den folgenden Befehl verwenden:Sobald Sie diesen Befehl ausführen, wird eine Liste aller Verzeichnisse und Dateien von Ihrem angegebenen Pfad auf der Konsole aufgelistet. Die Liste kann basierend auf Ihren gespeicherten Inhalten sehr lang sein.
find /bin /usr/li
Angenommen, Sie möchten eine Inhaltsliste, die direkt in Ihrer aktuellen Arbeit vorhanden ist. Das geht schnell, indem man nach dem Find-Befehl einen Punkt (.) setzt, einfach so:
find .
Wenn Sie irgendwie vergessen, den Punkt nach dem Find-Befehl einzufügen, werden immer noch Daten aus dem aktuellen Arbeitsverzeichnis angezeigt, wenn Sie nur den Find-Befehl ausführen.
find
Elemente nach Namen filtern
Oftmals ist es notwendig, verschiedene Elemente mit Hilfe ihrer Namen zu filtern. Der Linux-Befehl find directory kann Ihnen dabei ebenfalls helfen.
Angenommen, Sie möchten nach einer Datei mit dem Namen NEW.txt suchen, die sich im Verzeichnis /Desktop befindet, dann können Sie den Schalter „-name“ wie unten gezeigt verwenden:
find Desktop -name NEW.txt
Bei Verwendung des Schalters „-name“ wird eher zwischen Groß- und Kleinschreibung unterschieden. Um einen Befehl ohne Berücksichtigung der Groß-/Kleinschreibung zu verwenden, können Sie "-iname" anstelle von "-name"
verwendenfind Desktop -iname new.txt
Beide Schalter unterstützen "Wildcards", die als Platzhalter für unbekannte Zeichen verwendet werden. Der Platzhalter "* " wird verwendet, um eine beliebige Anzahl unbekannter Zeichen anzuzeigen, während "?" ist an ein einzelnes unbekanntes Zeichen gewöhnt.
Um diese Platzhalter zu verwenden, müssen Sie den Parameter des Befehls "name / iname" in doppelte oder einfache Anführungszeichen setzen.
Angenommen, Sie möchten nach allen Dateien im /Desktop-Verzeichnis suchen, die an ihrem letzten .txt enthalten. Dann kann dies mit dem folgenden Linux-Suchverzeichnisbefehl erfolgen:
find Desktop -name '*.txt'
Wenn Sie nun nach Dateien suchen möchten, deren Name drei Zeichen enthält, können Sie "?" in Anführungszeichen eingeschlossener Platzhalter.
find Desktop -name '???'
Festlegen der Suche nach Dateien oder Verzeichnissen
Wenn Sie den Linux-Befehl zum Suchen des Verzeichnisses verwenden, können Sie auch den Typ Ihrer Suche angeben. Sie können den Schalter "-type" verwenden, um anzugeben, dass Sie entweder nur nach Dateien oder Verzeichnissen suchen. Es gibt insgesamt drei Parameter des Schalters "-type":
- f - Dateien
- d - Verzeichnisse
- l - symbolische Links
Wenn Sie alle Verzeichnisse finden möchten, die im /usr-Pfad vorhanden sind, können Sie Folgendes verwenden:
find /usr -type d
Es gibt eine andere Möglichkeit, Schalter zu verwenden, indem man sie kombiniert. Zum Beispiel, um mit dem Schalter -name nach ".txt" zu suchen und gleichzeitig den Dateityp mit dem Schalter "-type" anzugeben:
find /usr -type f -name '*.txt'
Wie im obigen Beispiel können Sie Verzeichnisse auch finden, indem Sie den Parameter "d" im /usr-Pfad verwenden. Um Verzeichnisse mit dem Namen "cherrytree" zu finden:
find /usr -type d -name 'cherrytree'
Empty-Schalter zum Finden leerer Dateien
Sie können den Schalter „-empty“ innerhalb von Linux innerhalb des Linux-Befehls „Verzeichnis suchen“ verwenden. Dieser Schalter wird verwendet, um leere Dateien oder leere Verzeichnisse zu finden, die in Ihrem angegebenen Pfad vorhanden sind. Um leere Dateien im /usr-Verzeichnis zu finden, können Sie den folgenden Befehl mit dem "-type"-Schalter anwenden:
find /usr -type d -empty
Verneinung von Übereinstimmungen in Suchbefehlen
Wenn Sie etwas von der Suche ausschließen möchten, können Sie die Bedingung mit dem Befehl find negieren.
Angenommen, Sie möchten im Verzeichnis /usr nach Dateien ohne die Erweiterung ". Py" suchen. Sie können ein Ausrufezeichen (!) mit dem Schalter „-name“ einfügen, wie unten gezeigt:
find /usr -type f ! -name '*.py'
Das Ausrufezeichen kann auch verwendet werden, um jedem anderen Schalter entgegenzuwirken. Beispielsweise können Sie bei einem "-leeren" Schalter "!" statt nach leeren Verzeichnissen nach nicht leeren Verzeichnissen zu suchen.
find /usr -type f ! -empty
Suchen von Dateien basierend auf ihrem Eigentum
Es gibt eine Option zum Suchen von Dateien basierend auf dem Eigentum des Benutzers. Sie können den Schalter „-user“ verwenden, um nach Dateien zu suchen, die sich auf einen bestimmten Benutzer beziehen. Wenn Sie nach Dateien suchen möchten, die mit einem Benutzer namens "root" zusammenhängen, können Sie den folgenden Befehl anwenden, um eine Liste aller seiner Dateien zu erhalten.
find / -type f -user root
Anstelle des Benutzernamens können Sie auch die Benutzer-ID verwenden, um nach allen Dateien zu suchen, die diesem Benutzer gehören. Wenn Sie Ihre Benutzer-ID nicht kennen, können Sie sie mit dem folgenden Befehl ermitteln.
id -u <username>
Sie können auch gruppenweise mit Hilfe des Gruppennamens oder der Gruppen-ID suchen. Um Ihre Gruppen-ID zu finden, können Sie den folgenden Befehl verwenden.
id -g <username>
Dateien anhand ihrer Größe suchen
Der Linux-Befehl find directory ermöglicht es Ihnen auch, Dateien basierend auf ihrer Größe zu suchen. Zu diesem Zweck wird der Schalter „-size“ verwendet, der nur auf Dateien, nicht auf Verzeichnisse angewendet wird.
Sie können die Dateigröße angeben, indem Sie eine Zahl gefolgt von einem Buchstaben eingeben. Diese Buchstaben werden mit dem Schalter "-size" verwendet,
- c-Bytes
- k - Kilobyte
- m - Megabyte
- g - Gigabyte
Sie können auch eine Kleiner-als- oder Größer-als-Bedingung mit Hilfe von "+"- und "-"-Zeichen anwenden.
Hier ist ein Beispiel, um alle Systemdateien mit einer Größe von 20 KB zu finden:
find / -size 20k
Wenn Sie nach Dateien suchen möchten, die größer als 1 GB sind, können Sie Folgendes verwenden:
find / -size +1G
Falls Sie Dateien mit einer Größe von weniger als 20 MB möchten, können Sie die folgende Anweisung verwenden:
find / -size -20M
Aktionen mit dem Befehl Verzeichnis suchen
Die Befehle, die wir bisher verwendet haben, dienen nur dazu, die Ergebnisse auf dem Terminal anzuzeigen, aber es gibt einige Aktionen, die wir mit Hilfe des Befehls find ausführen können. Wir können auch notwendige Aktionen wie das Kopieren oder Löschen einer Datei durchführen.
Zum Löschen von Dateien
Sie können jede Datei oder jedes Verzeichnis einfach löschen, indem Sie einfach "-delete" mit Ihrem Suchbefehl verwenden. Angenommen, Sie möchten alle leeren Dateien im /Desktop-Verzeichnis löschen, dann können Sie den folgenden Befehl verwenden:
find Desktop -type f -empty -delete
Befehlsausführung
Der Schalter „-exec“ wird verwendet, um einen benutzerdefinierten Befehl auszuführen. Mit Hilfe des Schalters "-exec" können Sie viel machen.
Um alle Dateien auf einmal zu kopieren, können Sie verwenden:
find ~ -type f -name '*.mp3' -exec cp {} ';'
Im obigen Befehl verwenden wir ";" um das in Anführungszeichen eingeschlossene Ende des Befehls anzuzeigen. Die "{}" (Klammern), die Sie sehen, werden verwendet, um den Speicherort zu definieren.
Wenn nun eine übereinstimmende Datei gemäß der angegebenen gefunden wird, wird der cp-Befehl aktiviert, um die Dateien vom Speicherort zu verschieben.
Schlussfolgerung
Mit Hilfe des Find-Befehls können Sie noch viel mehr tun. Es ist praktisch für diejenigen, die an Linux CLI (Befehlszeilenschnittstelle) gewöhnt sind. Der Find-Befehl ist vollgepackt mit vielen Möglichkeiten, die Ihnen helfen, verschiedene Aktionen auszuführen und noch viel mehr zu tun. Es gibt auch Anleitungen zu den Linux-Befehlen zum Verschieben und Kopieren, werfen Sie einen Blick darauf.