Heim  >  Artikel  >  php教程  >  Linux-Dateisuchbefehl find

Linux-Dateisuchbefehl find

高洛峰
高洛峰Original
2016-12-14 16:43:361265Durchsuche

Jedes Betriebssystem besteht aus Tausenden von Dateien unterschiedlichen Typs. Es gibt Dateien, die mit dem System selbst geliefert werden, eigene Dateien des Benutzers, freigegebene Dateien usw. Manchmal vergessen wir oft, wo eine bestimmte Datei auf der Festplatte abgelegt ist. Es ist ganz einfach, eine Datei im WINDOWS-Betriebssystem zu finden. Klicken Sie einfach auf „Start“ – „Suchen“ auf dem Desktop und Sie können auf verschiedene Arten auf der lokalen Festplatte, im lokalen Netzwerk oder sogar im INTERNET suchen Dateien und Dokumente.

Aber Benutzer, die Linux verwenden, haben nicht so viel Glück, eine Datei unter Linux zu finden. Schließlich müssen wir unter Linux einen speziellen „find“-Befehl verwenden, um Dateien auf der Festplatte zu finden. Das Dateiausdrucksformat unter Linux ist nicht so einfach zu finden wie das einheitliche AAAAAAA.BBB-Format unter WINDOWS. Unter WINDOWS ist es sehr einfach, den Dateinamen oder das Suffix der gesuchten Datei zu finden . Der Befehl zum Suchen von Dateien unter Linux ist normalerweise der Befehl „find“. Der Befehl „find“ kann uns dabei helfen, die Dateien zu finden, die wir bei täglichen Aufgaben bei der Verwendung und Verwaltung von Linux benötigen. Für Linux-Neulinge ist der Befehl „find“ auch eine Möglichkeit, die Eigenschaften von Linux-Dateien zu verstehen und zu erlernen. Da es viele Linux-Distributionen gibt und Versionen schnell aktualisiert werden, geben Linux-Bücher häufig den Speicherort einer bestimmten Konfigurationsdatei an, Linux-Neulinge können diese jedoch häufig nicht finden, selbst wenn sie danach suchen. Beispielsweise haben sich in REDHAT Linux 7.O und REDHAT Linux 7.1 der Festplattenspeicherort und das Dateiverzeichnis, in dem sich einige wichtige Konfigurationsdateien befinden, stark geändert. Wenn Sie nicht lernen, den Befehl „find“ zu verwenden, dann Tausende von Linux-Dateien Es ist ziemlich schwierig, eine der Konfigurationsdateien in zu finden. Der Autor litt darunter, bevor ich den Befehl „find“ beherrschte. Okay, jetzt werde ich Ihnen alle Verwendungsmethoden und Verwendungsmöglichkeiten des leistungsstarken Befehls „find“ im Detail vorstellen.

Suchmethode nach Dateinamen:

Diese Methode ist genauso einfach zu verstehen wie die Suche nach Dateien unter WINDOWS. Wenn Sie diese Datei in einem einzelnen Ordner ablegen, können Sie sie leicht mit dem allgemeinen Befehl „ls“ finden. Wenn Sie sie dann mit dem Befehl „find“ finden, wird Sie das nicht beeindrucken Das ist noch nicht alles. Wenn Sie den Dateinamen einer bestimmten Datei kennen, aber nicht wissen, in welchem ​​Ordner die Datei abgelegt ist, oder auch nicht, in welchem ​​Ordner sie verschachtelt ist. Wenn Sie beispielsweise vergessen haben, in welchem ​​Verzeichnis sich die Datei httpd.conf im System befindet, oder gar nicht wissen, wo sie sich irgendwo im System befindet, können Sie den folgenden Befehl verwenden:

find / -name httpd .conf

Diese Befehlssyntax scheint leicht zu verstehen. Schreiben Sie einfach -name direkt nach find, um anzuzeigen, dass das System nach dem Dateinamen suchen muss, und schreiben Sie schließlich den Namen der Zieldatei httpd.conf. Nach einer Weile zeigt das System eine Liste der Suchergebnisse auf dem Computerbildschirm an:
etc/httpd/conf/httpd.conf

Dies ist der vollständige Pfad der Datei httpd.conf unter Linux System. Die Suche war erfolgreich.
Wenn das System nach Eingabe des obigen Suchbefehls keine Ergebnisse anzeigt, denken Sie nicht, dass das System den Befehl find/ -name httpd.conf nicht ausgeführt hat. Es kann sein, dass der Apache-Server nicht auf Ihrem Computer installiert ist In diesem Fall müssen Sie den Apache-Webserver installieren und dann find / -name httpd.conf verwenden, um diese Konfigurationsdatei zu finden.

Fehlerfreie Suchtechniken:

Im Linux-System ist der Befehl „find“ ein Befehl, der von den meisten Systembenutzern verwendet werden kann und nicht nur ROOT-Systemadministratoren vorbehalten ist. Normale Benutzer können jedoch auch auf ein solches Problem stoßen, wenn sie den Befehl „find“ verwenden. Das heißt, der Systemadministrator ROOT im Linux-System kann bestimmte Dateiverzeichnisse in den Modus „Zugriff verweigert“ versetzen. Auf diese Weise haben normale Benutzer keine Berechtigung, den Befehl „find“ zum Abfragen dieser Verzeichnisse oder Dateien zu verwenden. Wenn normale Benutzer den Befehl „find“ verwenden, um diese Dateiverzeichnisse abzufragen, erscheint häufig die Meldung „Permissiondenied“ (Zugriff verboten). Das System kann die gewünschte Datei nicht abfragen. Um solche Fehler zu vermeiden, verwenden wir die Methode zum Übertragen von Fehleraufforderungen, um zu versuchen, die Datei zu finden. Geben Sie
find / -name access_log 2>/dev/null

ein. Diese Methode dient zum Übertragen der Suche Fehlermeldung in ein bestimmtes Verzeichnis verschieben. Nachdem das System diesen Befehl ausgeführt hat, werden die aufgetretenen Fehlerinformationen direkt an stderrstream 2 gesendet. Access_log 2 zeigt an, dass das System die Fehlerinformationen an stderrstream 2 sendet. /dev/null ist eine spezielle Datei, die anzeigt, dass sie leer oder falsch ist. Informationen, sodass die abgefragten Fehlerinformationen übernommen und nicht erneut angezeigt werden.

Auch die Suche nach Dateien in einem Linux-System wird auf ein solches praktisches Problem stoßen. Wenn wir auf der gesamten Festplatte nach einer bestimmten Datei suchen, dauert es in diesem System sehr lange, insbesondere bei großen Linux-Systemen und Festplatten mit großer Kapazität, wenn die Dateien in tief verschachtelten Verzeichnissen abgelegt werden. Wenn wir wissen, dass diese Datei in einem großen Verzeichnis gespeichert ist, können wir viel Zeit sparen, indem wir einfach in diesem Verzeichnis nach unten suchen. Verwenden Sie find /etc -name httpd.conf, um dieses Problem zu lösen. Der obige Befehl bedeutet, die Datei httpd.conf im Verzeichnis etc abzufragen. Hier ist eine weitere Erklärung der Bedeutung des Funktionssymbols „/“. Wenn Sie „find/“ eingeben, bedeutet dies, dass das Linux-System nach Dateien im gesamten ROOT-Verzeichnis suchen muss, d gesamte Festplatte, während „find/etc“ nur die Suche nach Dateien im Verzeichnis „etc“ bedeutet. Da „find/etc“ nur die Suche nach Dateien im Verzeichnis „etc“ bedeutet, ist die Suchgeschwindigkeit entsprechend viel schneller.

Suchmethode basierend auf einem Teil des Dateinamens:
Diese Methode ist dieselbe wie die Suche nach bekannten Dateinamen in WINDOWS. Allerdings ist die Methode der Suche nach Dateien basierend auf einem Teil des Dateinamens unter Linux viel leistungsfähiger als die ähnliche Methode der Suche unter WINDOWS. Wenn wir beispielsweise wissen, dass eine Datei die drei Buchstaben srm enthält, können wir alle Dateien im System finden, die diese drei Buchstaben enthalten. Geben Sie Folgendes ein:

find /etc -name '*srm*. '

Dieser Befehl gibt an, dass das Linux-System im gesamten /etc-Verzeichnis nach allen Dateien sucht, die die drei Buchstaben srm enthalten, z. B. absrmyz, tibc.srm und andere Dateien, die die Bedingungen erfüllen, können angezeigt werden. Wenn Sie außerdem wissen, dass diese Datei mit den drei Buchstaben srm beginnt, dann können wir das erste Sternchen auch weglassen, der Befehl lautet wie folgt:

 find/etc -name 'srm*'

Es werden nur Dateien wie „srmyz“ oder „absrm“ gefunden, die den Anforderungen nicht entsprechen. Dadurch wird die Effizienz und Zuverlässigkeit der Dateisuche erheblich verbessert.

Abfragemethode basierend auf Dateieigenschaften:

Wenn Sie nur die Größe, das Änderungsdatum und andere Eigenschaften einer bestimmten Datei kennen, können Sie diese auch mit dem Befehl „find“ finden ähnelt der „Suche“ im WINDOWS-System „Die Funktionalität ist grundsätzlich gleich.“ In Microsoft Search erleichtert der Suchassistent in Windows die Suche nach Dateien und Ordnern, Druckern, Benutzern und anderen Computern im Netzwerk. Es erleichtert sogar die Suche im Internet. Search Assistant umfasst außerdem einen Indexdienst, der einen Index aller Dateien auf Ihrem Computer verwaltet und so die Suche beschleunigt. Bei Verwendung des Suchassistenten können Benutzer mehrere Suchkriterien angeben. Benutzer können beispielsweise Dateien und Ordner nach Name, Typ und Größe durchsuchen. Benutzer können sogar nach Dateien suchen, die einen bestimmten Text enthalten. Wenn Sie Active Directory verwenden, können Sie auch nach Druckern mit einem bestimmten Namen oder Standort suchen.

Wenn wir beispielsweise wissen, dass die Größe einer Linux-Datei 1.500 Byte beträgt, können wir mit dem folgenden Befehl find / -size 1500c abfragen. Das Zeichen c gibt die Größe der zu findenden Datei an ist in Bytes. Wenn wir nicht einmal die spezifische Größe dieser Datei kennen, können wir das Problem auch mit der Fuzzy-Suche unter Linux lösen. Wenn wir beispielsweise den Befehl find/ -size +10000000c eingeben, bedeutet dies, dass wir angeben, dass das System Dateien, die größer als 10000000 Byte sind, im Stammverzeichnis findet und anzeigt. Das „+“ im Befehl gibt an, dass das System nur Dateien auflisten muss, die größer als die angegebene Größe sind, während die Verwendung von „-“ angibt, dass das System Dateien auflisten muss, die kleiner als die angegebene Größe sind. Die folgende Liste ist die Suchaktion, die das System nach Verwendung verschiedener „find“-Befehle unter Linux ausführt. Daraus können wir leicht erkennen, dass es viele Möglichkeiten gibt, den „find“-Befehl unter Linux zu verwenden „Der Befehl wird flexibel zum Suchen von Dateien verwendet. Eine schlechte Suchfunktion in WINDOWS ist nicht erforderlich.

Find / -amin -10 # Dateien finden, auf die in den letzten 10 Minuten im System zugegriffen wurde
find / -atime -2 # Dateien finden, auf die in den letzten 48 Stunden im System zugegriffen wurde
find / -empty # Leere Dateien oder Ordner im System finden
Suchen / -group cat # Dateien suchen, die zu Groupcat im System gehören
Suchen / -mmin -5 # Dateien finden, die in den letzten 5 Minuten geändert wurden die Systemdateien
Suchen / -mtime -1 #Suchen Sie Dateien, die in den letzten 24 Stunden im System geändert wurden
Suchen / -nouser #Suchen Sie Dateien ungültiger Benutzer im System
Suchen / - Benutzer fred #Suchen Sie nach Dateien, die dem Benutzer FRED im System gehören


Die folgende Liste enthält einige Bedingungen für die Suche nach den Merkmalen der Dateien, die mit dem Befehl „find“ angegeben werden können. Hier sind nicht alle Suchbedingungen aufgeführt. Die Suchfunktionen aller Suchbefehle können Sie in einschlägigen Büchern zu Linux nachlesen.
-amin n
Dateien suchen, auf die in den letzten N Minuten im System zugegriffen wurde
-atime n
Dateien suchen, auf die in den letzten n*24 Stunden im System zugegriffen wurde
-cmin n
Suchen Sie nach Dateien im System. Dateien, deren Status in den letzten N Minuten geändert wurde
 -ctime n
Suchen Sie nach Dateien, deren Status in den letzten n*24 Stunden im System geändert wurde
-empty
Finden Sie leere Dateien im System oder leere Dateiverzeichnisse oder Ordner ohne Unterverzeichnisse im Verzeichnis
 -false
 Finden Sie Dateien, die im System immer falsch sind
 -fstype-Typ
 Finden Sie die Systemdateien, die im angegebenen Dateisystem vorhanden sind, zum Beispiel: ext2. Und geben Sie die Gruppe und ID der Datei an
Beschreibung der Steueroptionen des Befehls „Suchen“:
Der Befehl „Suchen“ bietet Benutzern auch einige einzigartige Optionen zur Steuerung der Suchvorgang. Die folgende Tabelle fasst die grundlegendsten und am häufigsten verwendeten Steuerungsoptionen des Befehls „find“ und deren Verwendung zusammen.
Option
Verwendungsbeschreibung
-daystart
Testen Sie die Dateien des Systems innerhalb von 24 Stunden ab heute. Die Verwendung ähnelt -amin
- Depth
Verwenden Sie den Suchvorgang auf Tiefenebene Methode: Priorisieren Sie die Suche nach Dateiinhalten im angegebenen Verzeichnis auf einer bestimmten Ebene
 -follow
Folgen Sie der Wildcard-Link-Methode, um zu suchen. Darüber hinaus können Sie die Wildcard-Link-Methode
 -helpZeigen Sie die Befehlszusammenfassung an
 -max Depth Levels
Suchen Sie in einer bestimmten Verzeichnisebene nach der absteigenden Methode
-mount
Suchen Sie nicht im Dateisystemverzeichnis, die Verwendung ist ähnlich wie – xdev.
-noleaf
Verboten in Nicht-UNUX-Dateisystemen, MS-Optimierte Suche im DOS-System, CD-ROM-Dateisystem
-version
Versionsnummer drucken


Nach Verwendung der Option -follow folgt der Befehl „find“ bei der Suche der Wildcard-Link-Methode, es sei denn, Sie geben diese Option an. Andernfalls ignoriert der Befehl „find“ im Allgemeinen die Wildcard-Link-Methode für die Dateisuche.

Die Funktion der Option -max Depth besteht darin, den Suchbefehl daran zu hindern, in absteigender Reihenfolge nach Dateien in einem Verzeichnis zu suchen, wenn nach Dateien gesucht wird, die eine bestimmte Ebene überschreiten, oder wenn zu viele Verzeichnisse durchsucht werden. Dies führt zu einer Verringerung der Suchgeschwindigkeit zu verlangsamen und die Suchzeit zu lang zu sein. Wenn wir beispielsweise eine Datei mit dem Namen „fred“ im technischen Unterverzeichnis des aktuellen Verzeichnisses (.) finden möchten, können wir den folgenden Befehl verwenden:

Find -max Depth 2 -name fred

Wenn dies fred Die Datei befindet sich im Verzeichnis ./sub1/fred, dann findet dieser Befehl die Datei direkt und die Suche ist einfach erfolgreich. Wenn sich diese Datei im Verzeichnis ./sub1/sub2/fred befindet, kann dieser Befehl sie nicht finden. Da die maximale Abfrageverzeichnisebene für den Suchbefehl im Verzeichnis 2 beträgt, können nur Dateien im 2-Ebenen-Verzeichnis gefunden werden. Der Zweck besteht darin, dem Befehl „find“ das genauere Auffinden von Dateien zu ermöglichen. Wenn Sie die ungefähre Dateiverzeichnisebene, in der sich eine bestimmte Datei befindet, bereits kennen, können Sie sie durch Hinzufügen von „-max Depth“ schnell erfolgreich im angegebenen Verzeichnis finden.

Verwenden Sie die gemischte Suchmethode, um Dateien zu finden.
Der Suchbefehl kann die gemischte Suchmethode verwenden. Wenn wir beispielsweise eine Datei im Verzeichnis /tmp finden möchten, die größer als 100000000 Bytes ist und geändert wurde Innerhalb von 48 Stunden können wir mit -and zwei Suchoptionen zu einer Hybridsuche verknüpfen.
 find /tmp -size +10000000c -and -mtime +2

Freunde, die Computersprache studiert haben, wissen alle, dass in der Computersprache und und oder verwendet werden, um „und“ bzw. „oder“ darzustellen . Beziehung. Es kommt auch häufig im Suchbefehl von Linux-Systemen vor.
Es gibt ein weiteres Beispiel:
find / -user fred -or -user george

Wir können es so interpretieren, dass wir Dateien der beiden Benutzer fred oder george im Verzeichnis /tmp finden.
Sie können auch die „nicht“-Beziehung verwenden, um Dateien im Verzeichnis „/tmp“ zu finden, die nicht zu Panda gehören, verwenden Sie einen einfachen
find /tmp ! user panda
Der Befehl löst das Problem. Ganz einfach.

So finden und anzeigen Sie Dateien
Das Finden einer Datei ist unser Ziel. Wir möchten auch die detaillierten Informationen und Attribute der gefundenen Datei erfahren. Wenn wir jetzt den LS-Befehl verwenden, um die Datei zu finden. Es ist ziemlich umständlich, Dateiinformationen anzuzeigen. Jetzt können wir diese beiden Befehle auch kombinieren.

Suchen / -name "httpd.conf" -ls

Das System zeigt sofort die Informationen zur Datei httpd.conf auf dem Bildschirm an, nachdem die Datei httpd.conf gefunden wurde.
 12063 34 -rw-r--r-- 1 root root 33545 30. Dezember 15:36 /etc/httpd/conf/httpd.conf

 Die folgende Tabelle enthält einige häufig verwendete Suchdateien und Anzeige Parameter und Verwendung von Dateiinformationen
Optionen
Verwendungsbeschreibung
-exec-Befehl;
Den vollständigen Dateinamen einschließlich leerer Dateien drucken
-fprintf-Dateiformat
Dateiformat drucken
-ok Befehl; > -printf Format
Dateiformat drucken
-ls
Dateien im gleichen Dateiformat druckenZusammenfassung: Bisher haben wir viel über die Verwendung des Suchbefehls gelernt und auch viele häufig verwendete Suchbefehlsoptionen aufgelistet. Wenn wir die Verwendung des Suchbefehls unter Linux beherrschen, ist die Suche in der Linux-Dokumentation keine schwierige Sache entweder.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn