Heim  >  Artikel  >  php教程  >  Format des Linux-Suchbefehls und ausführliche Erläuterung des Suchbefehls

Format des Linux-Suchbefehls und ausführliche Erläuterung des Suchbefehls

高洛峰
高洛峰Original
2016-12-14 17:17:531233Durchsuche

1. Die allgemeine Form des Suchbefehls lautet:

find pathname -options [-print -exec -ok ...]

2.

Pfadname: Der vom Suchbefehl durchsuchte Verzeichnispfad. Verwenden Sie beispielsweise ., um das aktuelle Verzeichnis darzustellen, und /, um das Stammverzeichnis des Systems darzustellen.

-print: Der Suchbefehl gibt passende Dateien auf der Standardausgabe aus.

-exec: Der Befehl „find“ führt den durch diesen Parameter angegebenen Shell-Befehl für die passende Datei aus. Der entsprechende Befehl hat die Form „Befehl“ { } ;, beachten Sie das Leerzeichen zwischen { } und ;.

-ok: hat die gleiche Wirkung wie -exec, außer dass es den durch diesen Parameter angegebenen Shell-Befehl in einem sichereren Modus ausführt. Vor der Ausführung jedes Befehls wird eine Aufforderung angezeigt, ob der Benutzer entscheiden soll, ob er dies tun möchte ausführen.

3. Befehlsoptionen suchen

-name

Dateien anhand des Dateinamens suchen.

-perm

Dateien anhand ihrer Berechtigungen finden.

-prune

Verwenden Sie diese Option, um zu verhindern, dass der Suchbefehl im aktuell angegebenen Verzeichnis sucht. Wenn auch die Option - Depth verwendet wird, wird -prune vom Suchbefehl ignoriert.

-user

Suchen Sie nach Dateien basierend auf ihrem Besitzer.

-group

Suchen Sie Dateien anhand der Gruppe, zu der sie gehören.

-mtime -n +n

Dateien anhand ihres Änderungszeitpunkts finden. - n bedeutet, dass der Dateiänderungszeitpunkt innerhalb von n Tagen liegt, + n bedeutet, dass der Dateiänderungszeitpunkt lag vor n Tagen. Der Befehl find verfügt auch über die Optionen -atime und -ctime, diese sind jedoch mit der Option -m time identisch.

-nogroup

Suchen Sie nach Dateien, die keine gültige Gruppe haben, zu der sie gehören, d. h. die Gruppe, zu der die Datei gehört, existiert nicht in /etc/groups.

-nouser

Suchen Sie nach Dateien ohne gültigen Besitzer, d. h. der Besitzer der Datei existiert nicht in /etc/passwd.

-neuere Datei1 ! Datei2

Suchen Sie nach Dateien, deren Änderungszeit neuer als Datei1, aber älter als Datei2 ist.

-type

Sucht nach einer Datei eines bestimmten Typs, wie zum Beispiel:

b – Gerätedatei blockieren.

d – Verzeichnis.

c – Zeichengerätedatei.

p – Pipe-Datei.

l – Symbolische Linkdatei.

f – normale Datei.

-size n: [c] Dateien mit einer Dateilänge von n Blöcken finden. Bei c wird die Dateilänge in Bytes angegeben. -Tiefe: Suchen Sie bei der Suche nach Dateien zuerst im aktuellen Verzeichnis und dann in seinen Unterverzeichnissen nach Dateien.

-fstype: Suchen Sie nach Dateien, die sich in einem bestimmten Dateisystemtyp befinden. Diese Dateisystemtypen finden Sie normalerweise in der Konfigurationsdatei /etc/fstab. Diese Konfigurationsdatei enthält Informationen über das Dateisystem in diesem System. .

-mount: Überqueren Sie bei der Suche nach Dateien nicht den Mountpunkt des Dateisystems.

-follow: Wenn der Suchbefehl auf eine symbolische Linkdatei stößt, folgt er der Datei, auf die der Link verweist.

-cpio: Verwenden Sie den cpio-Befehl für übereinstimmende Dateien, um diese Dateien auf einem Bandgerät zu sichern.

Außerdem der Unterschied zwischen den folgenden drei:

-amin n

Suchen Sie die Dateien, auf die in den letzten N Minuten im System zugegriffen wurde

- atime n

Suchen Sie die Dateien, auf die in den letzten n*24 Stunden im System zugegriffen wurde

-cmin n

Suchen Sie die Dateien, deren Dateistatus im System geändert wurde letzte N Minuten

-ctime n

Suchen Sie nach Dateien, deren Dateistatus in den letzten n*24 Stunden im System geändert wurde

-mmin n

Suchen Sie Dateien, deren Dateidaten in den letzten N Minuten im System geändert wurden

-mtime n

Suchen Sie die Dateien, deren Dateidaten in den letzten n*24 Stunden im System geändert wurden System

4. Verwenden Sie exec oder ok, um den Shell-Befehl auszuführen.

Verwenden Sie find. Wenn Sie einen Befehl ausführen, müssen Sie nur die gewünschte Operation in eine Datei schreiben und können mit exec suchen mit dem Befehl „find“ ist sehr praktisch.

In einigen Betriebssystemen ist nur die Option -exec zum Ausführen von Befehlen wie ls oder ls - l zulässig. Die meisten Benutzer nutzen diese Option, um alte Dateien zu finden und zu löschen. Es wird empfohlen, vor der tatsächlichen Ausführung des Befehls rm zum Löschen von Dateien am besten den Befehl ls zu verwenden, um einen Blick darauf zu werfen und zu bestätigen, dass es sich um die zu löschenden Dateien handelt.

Auf die Option exec folgt der Befehl oder das Skript, das ausgeführt werden soll, dann ein Paar aus { }, einem Leerzeichen und einem und schließlich einem Semikolon. Um die Exec-Option nutzen zu können, muss auch die Print-Option verwendet werden. Wenn Sie den Befehl find überprüfen, werden Sie feststellen, dass der Befehl nur den relativen Pfad und Dateinamen vom aktuellen Pfad ausgibt.

Zum Beispiel: Um den Befehl ls -l zum Auflisten der übereinstimmenden Dateien zu verwenden, können Sie den Befehl ls -l in die Option -exec des Befehls find einfügen

# find . -type f - exec ls -l { } ;

-rw-r--r-- 1 root root 34928 2003-02-25 ./conf/httpd.conf

-rw -r-- r-- 1 Wurzel Wurzel 12959 25.02.2003 ./conf/magic

-rw-r--r-- 1 Wurzel Wurzel 180 25.02.2003 ./conf.d /README

Im obigen Beispiel sucht der Befehl „find“ nach allen gewöhnlichen Dateien im aktuellen Verzeichnis und verwendet den Befehl „ls -l“ in der Option „-exec“, um sie aufzulisten.

Suchen Sie Dateien im /logs-Verzeichnis mit Änderungszeiten, die älter als 5 Tage sind, und löschen Sie sie:

$ find logs -type f -mtime +5 -exec rm { } ;

Denken Sie daran: Bevor Sie Dateien in irgendeiner Weise in der Shell löschen, sollten Sie zuerst die entsprechenden Dateien überprüfen, seien Sie vorsichtig! Der abgesicherte Modus mit der Option -exec kann verwendet werden, wenn Befehle wie mv oder rm verwendet werden. Sie werden vor der Bearbeitung jeder passenden Datei aufgefordert.

Im folgenden Beispiel findet der Befehl „find“ alle Dateien im aktuellen Verzeichnis, deren Dateinamen mit .LOG enden und deren Änderungszeit mehr als 5 Tage zurückliegt, und löscht sie, gibt jedoch vor dem Löschen eine Eingabeaufforderung aus.

$ find . -name "*.conf" -mtime +5 -ok rm { } ;

< rm ... ./conf/httpd.conf > ?n

파일을 삭제하려면 y 키를 누르고, 삭제하지 않으려면 n 키를 누르세요.

-exec 옵션과 함께 모든 형태의 명령을 사용할 수 있습니다.

다음 예에서는 grep 명령을 사용합니다. find 명령은 먼저 passwd, passwd.old, passwd.bak와 같은 "passwd*"라는 이름의 모든 파일을 일치시킨 다음 grep 명령을 실행하여 이러한 파일에 sam 사용자가 있는지 확인합니다.

# find /etc -name "passwd*" -exec grep "sam" { } ;

sam:x:501:501::/usr/sam:/bin/bash


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