Der Befehl „find“ hilft uns, eine bestimmte Datei in einem Verzeichnis zu finden. Es wird verwendet, um die Liste der Dateien für die verschiedenen Bedingungen wie Berechtigung, Benutzereigentum, Änderung, Datum/Uhrzeit, Größe und mehr zu finden.
In Unix-ähnlichen und anderen Betriebssystemen ist der Befehl „find“ ein Befehlszeilendienstprogramm, das Dateien auf der Grundlage einiger vom Benutzer angegebener Formate findet und entweder den Pfadnamen aller übereinstimmenden Objekte ausgibt oder, wenn andere Aktionen angefordert werden, diese Aktion implementiert alle übereinstimmenden Objekte.
Es startet eine Suche an einem gewünschten Startort und durchläuft anschließend rekursiv die Verzeichnisse (Knoten) einer hierarchischen Struktur (im Allgemeinen ein Baum). Der Befehl „find“ kann verschiedene Dateipartitionssysteme suchen und durchsuchen, die zu einem einzelnen oder mehreren Speichergeräten im Startverzeichnis gehören.
Das Suchformat enthält ein Muster für den Abgleich mit dem Dateinamen oder den Zeitbereich für den Abgleich mit der Änderungszeit oder der Dateizugriffszeit. Der Befehl „find“ stellt standardmäßig eine Liste aller Dateien im aktuellen Arbeitsverzeichnis bereit. Benutzer können die Suche jedoch auf eine gewünschte maximale Ebene im Startverzeichnis beschränken.
Die zugehörigen Suchprogramme verwenden eine indizierte Dateidatenbank, die über den Befehl „fine“ abgerufen wurde, um eine schnellere Technik zum Durchsuchen des gesamten Dateisystems nach Namen bereitzustellen.
Das Suchdienstprogramm ist standardmäßig in den meisten enthalten Linux-Distributionen , sodass wir kein zusätzliches Paket installieren müssen. Es ist einer der wichtigsten und am häufigsten verwendeten Befehle der Linux System.
find
Die beiden Optionen bestimmen, wie find symbolische Links berücksichtigen soll. Die Standardeinstellung besteht darin, niemals symbolische Links zu verfolgen. Die Flagge, d.h. -L , wird dazu führen, dass symbolische Links verfolgt werden. Die Flagge, d.h. -H , verfolgt lediglich symbolische Links, während mit den Befehlszeilenargumenten fortgefahren wird. Die Flags werden im POSIX-Standard für den Find-Befehl erwähnt. Eine grundlegende Erweiterung ist ein Flag, d. h. -P , um den folgenden Symlink explizit zu deaktivieren.
Zumindest ein Pfad muss den Ausdruck vorwegnehmen. Der Befehl find kann Platzhalter intern interpretieren und Befehle müssen sorgfältig in Anführungszeichen gesetzt werden, um Shell-Globbing zu verwalten.
Ausdruckskomponenten werden durch die Befehlszeilenargumentgrenze isoliert, die in der Shell-Syntax im Allgemeinen als Leerzeichen angezeigt wird. Sie werden von links nach rechts betrachtet. Sie können logische Komponenten wie OR und AND sowie Prädikate (Aktionen und Filter) enthalten. GNU find enthält mehrere andere Funktionen, die von POSIX nicht erwähnt werden.
Zur Angabe des Verzeichnisses werden folgende Symbole verwendet:
(.) : Für den aktuellen Verzeichnisnamen
(/) : Für das Stammverzeichnis
Kurze Geschichte des Find-Befehls
Der Befehl find kam in Version 5 Unix als Element von vor Programmierer-Workbench Projekt und wurde von spezifiziert Dick Haight mit cpio, die für den gemeinsamen Einsatz entwickelt wurden.
Ursprünglich wurde die GNU-Implementierung des Befehls find durch spezifiziert Eric Decker . Später wurde es von entwickelt David MacKenzie, Tim Wood , Und Jay Plett . Außerdem wurde der Befehl „find“ auf das Betriebssystem IBM i portiert.
Singleton-Design
Prädikate
Weit verbreitete Primärfarben sind:
Find implementiert standardmäßig -print, falls die Bedingungen wahr sind und der Ausdruck keines von -ok, -exec, -print oder -print0 verwendet.
Betreiber
Operatoren erweitern die Suchbefehlsausdrücke. Sie werden in absteigender Reihenfolge aufgeführt:
- expr1 expr2 (oder expr1 -a expr2 : AND. expr2 wird nicht ausgewertet, wenn expr1 falsch ist.
- Ausdruck1 -o Ausdruck2: ODER. Ausdruck2 wird nicht ausgewertet, wenn Ausdruck1 wahr ist.
Beispiele für den find-Befehl
Sehen wir uns die folgenden Beispiele des Suchbefehls an:
- Suchen Sie Dateien nach Namen
- Suchen Sie Dateien nach Typ
- Finden Sie neuere Dateien
- Suchen und löschen Sie eine Datei
- Suchen Sie ein Verzeichnis
- Suchen Sie Dateien nach Änderungszeit
- Dateien nach Berechtigung suchen
- Suchen und ersetzen Sie Dateien
- Suchen Sie nach Text in mehreren Dateien
Suchen Sie Dateien nach Namen
Wir können alle Dateien durchsuchen, die mit der Erweiterung „.txt“ enden. Führen Sie dazu den folgenden Befehl aus:
find . -name '*.txt'
Der obige Befehl listet alle Textdateien aus dem aktuellen Arbeitsverzeichnis auf. Betrachten Sie die folgende Ausgabe:
Aus der obigen Ausgabe werden alle Dateien mit der Erweiterung „.txt“ mit dem Befehl „find“ aufgelistet.
Dateien nach Typ suchen
Der Parameter „-type“ wird verwendet, um den Dateityp anzugeben.
Einige der Dateitypen sind wie folgt:
- f: reguläre Datei
- d: Verzeichnis
- l: symbolische Links
- c: Zeichengeräte
- b: Geräte blockieren
Betrachten Sie den folgenden Befehl:
find . -type d -name '*.bak'
Der obige Befehl listet alle Verzeichnisse mit der Erweiterung „.bak“ auf. Betrachten Sie die folgende Ausgabe:
foreach-Schleifen-Typoskript
Aus der obigen Ausgabe wird der Befehl „find . -type d -name '*.bak' zeigt alle Verzeichnisse an, die mit '.bak' enden.
Finden Sie neuere Dateien
Der Parameter „-newer“ hilft bei der Suche nach Dateien, die neuer als die genannte Datei sind. Betrachten Sie den folgenden Befehl:
find . -newer msg.txt
Der obige Befehl zeigt alle Dateien aus dem aktuellen Arbeitsverzeichnis an, die neuer als „msg.txt“ sind. Betrachten Sie die folgende Ausgabe:
Aus der obigen Ausgabe geht hervor, dass alle angezeigten Dateien neuer sind als die Datei „msg.txt“.
Suchen und löschen Sie eine Datei
Die Option „-delete“ wird verwendet, um eine bestimmte Datei zu löschen. Wir müssen bei der Verwendung dieses Befehls sehr vorsichtig sein, da es keine Option zum Rückgängigmachen gibt, wenn er einmal ausgeführt wurde. Betrachten Sie den folgenden Befehl:
find . -name Demo.txt -delete
Der obige Befehl löscht die Datei „Demo.txt“ aus dem aktuellen Arbeitsverzeichnis. Betrachten Sie die folgende Ausgabe:
Suchen Sie ein Verzeichnis
Die Option „type -d“ wird verwendet, um ein Verzeichnis zu finden. Betrachten Sie den folgenden Befehl:
find . type -depth -name Newdirectory
Der obige Befehl findet den Speicherort „Neues Verzeichnis“. Betrachten Sie die folgende Ausgabe:
Suchen Sie Dateien nach Änderungszeit
Die Option „-mtime“, gefolgt von der Anzahl der Tage, wird verwendet, um die Dateien durch Änderung zu finden. Die Anzahl der Tage kann positiv oder negativ sein. Der negative Wert wird für weniger als den letzten Tag verwendet, ähnlich wie -1 für den letzten Tag, und in ähnlicher Weise findet +1 die Datei für den Tag, der mehr als einen Tag zurückliegt. Betrachten Sie den folgenden Befehl:
find ./Newdirectory -mtime -1
Der obige Befehl findet die Dateien, die am letzten Tag geändert wurden. Betrachten Sie die folgende Ausgabe:
Dateien nach Berechtigung suchen
Die Option „-perm“ wird verwendet, um Dateien nach Berechtigung zu finden. Führen Sie den Suchbefehl mit der Option „-perm“ aus und übergeben Sie den erforderlichen Wert. Betrachten Sie den folgenden Befehl:
find ./ -perm 777
Der obige Befehl listet die Dateien aus dem angegebenen Verzeichnis auf, die jeder lesen, schreiben und ausführen kann.
Suchen und ersetzen Sie Dateien
Um Dateien zu finden und zu ersetzen, müssen wir den Befehl „find“ mit dem Befehl „sed“ kombinieren. Um Dateien zu bearbeiten, verwenden Sie die Option „-exec“ mit dem Befehl „find“. Betrachten Sie den folgenden Befehl:
Logik 1. Ordnung
find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ;
Mit dem obigen Befehl wird das angegebene Vorkommen ersetzt. Betrachten Sie die folgende Ausgabe:
Suchen Sie nach Text in mehreren Dateien
Wir können den Befehl „find“ mit dem Befehl „grep“ noch einmal kombinieren, um den Text aus den verschiedenen Dateien zu finden. Betrachten Sie den folgenden Befehl:
find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ;
Der obige Befehl findet die Zeilen mit dem Text „demo“ aus allen Textdateien im Verzeichnis „Neues Verzeichnis“. Betrachten Sie die folgende Ausgabe:
Aus der obigen Ausgabe können wir sehen, dass die Zeilen mit dem Text „demo“ angezeigt wurden.
Durchsuchen Sie jedes Verzeichnis
$ find / -name file1 -type f -print
Der obige Befehl findet alle Verzeichnisse für eine reguläre Datei mit dem Titel Datei1 und gibt sie auf dem Bildschirm aus. Im Allgemeinen ist es keine gute Idee, auf diese Weise nach Dateien zu suchen. Es kann eine ganze Weile dauern. Daher ist es am besten, das Verzeichnis zu erwähnen. Einige Betriebssysteme mounten möglicherweise Dateisysteme (dynamisch), die für den Befehl „find“ nicht geeignet sind. Kompliziertere Dateinamen, die für die Shell eindeutige Zeichen enthalten, müssen möglicherweise in einfache Anführungszeichen gesetzt werden.