Heim  >  Artikel  >  php教程  >  Verwendung des Befehls „find' unter Linux

Verwendung des Befehls „find' unter Linux

高洛峰
高洛峰Original
2016-12-14 16:50:291331Durchsuche

Der Suchbefehl unter Linux sucht nach Dateien in der Verzeichnisstruktur und führt den angegebenen Vorgang aus. Der Befehl „find“ unter Linux bietet zahlreiche Suchbedingungen und ist sehr leistungsfähig. Da find über leistungsstarke Funktionen verfügt, verfügt es auch über viele Optionen, von denen es sich lohnt, die meisten zu verstehen. Auch wenn das System ein Network File System (NFS) enthält, ist der Find-Befehl auch im Dateisystem gültig, sofern Sie über die entsprechenden Berechtigungen verfügen. Beim Ausführen eines sehr ressourcenintensiven Suchbefehls tendieren viele dazu, ihn im Hintergrund auszuführen, da das Durchlaufen eines großen Dateisystems lange dauern kann (hier bezieht sich auf ein Dateisystem mit mehr als 30 GByte).

1. Befehlsformat:

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

2. Befehlsfunktion:

wird verwendet, um nach Dateien im Dateibaum zu suchen und die entsprechende Verarbeitung durchzuführen

3. Befehlsparameter:

Pfadname: der vom Suchbefehl durchsuchte Verzeichnispfad. Verwenden Sie beispielsweise ., um das aktuelle Verzeichnis darzustellen, und /, um das Stammverzeichnis des Systems darzustellen.
-print: Der Befehl „find“ gibt passende Dateien in 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“ { } ;, achten Sie auf das Leerzeichen zwischen { } und;.
-ok: Es hat die gleiche Funktion 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 der Benutzer aufgefordert, zu bestätigen, ob er ausgeführt werden soll .

4. Befehlsoptionen:

-name Suchen Sie nach Dateien anhand des Dateinamens.
-perm Dateien basierend auf Dateiberechtigungen suchen.
-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 Dateien nach ihren Besitzern durchsuchen.
-group Suchen Sie nach Dateien entsprechend der Gruppe, zu der sie gehören.
-mtime -n +n Dateien nach ihrer Änderungszeit suchen. - n bedeutet, dass die Dateiänderungszeit innerhalb von n Tagen liegt, + n bedeutet, dass die Dateiänderungszeit in n Tagen liegt. 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 Suche nach Dateien ohne gültigen Besitzer, d. h. der Besitzer der Datei existiert nicht in /etc/passwd.
-newer file1 ! file2 Findet Dateien, deren Änderungszeit neuer als Datei1, aber älter als Datei2 ist.
-type Findet Dateien eines bestimmten Typs, wie zum Beispiel:
b – Gerätedateien 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 Befehl cpio für übereinstimmende Dateien, um diese Dateien auf einem Bandgerät zu sichern.

Außerdem der Unterschied zwischen den folgenden drei:

-amin n Findet die Dateien, auf die in den letzten N Minuten im System zugegriffen wurde
-atime n Findet die Dateien, auf die in den letzten N Minuten zugegriffen wurde n*24 Stunden im System
-cmin n Dateien finden, deren Dateistatus in den letzten N Minuten im System geändert wurde
-ctime n Dateien finden, deren Dateistatus in den letzten n*24 Stunden geändert wurde im System
-mmin n Dateien finden, deren Dateistatus in den letzten N Minuten im System geändert wurde. Dateien mit geänderten Dateidaten
-mtime n Dateien mit geänderten Dateidaten in den letzten n*24 Stunden finden das System

5. Anwendungsbeispiel:

Beispiel 1: Dateien suchen, die innerhalb einer bestimmten Zeit geändert wurden

Befehl:
find -atime -2

Ausgabe:

[root@peidachang ~]# find -atime -2
.
./logs/monitor
./.bashrc
./.bash_profile
./.bash_history

Anleitung:

Dateien finden, die innerhalb von 48 Stunden geändert wurden

Beispiel 2: Suche anhand von Schlüsselwörtern

Befehl:

find . log"

Ausgabe:

[root@localhost test]# find . -name "*.log" 
./log_link.log
./log2014.log
./test4/log3-2.log
./test4/log3-3.log
./test4/log3-1.log
./log2013.log
./log2012.log
./log.log
./test5/log5-2.log
./test5/log5-3.log
./test5/log.log
./test5/log5-1.log
./test5/test3/log3-2.log
./test5/test3/log3-3.log
./test5/test3/log3-1.log
./test3/log3-2.log
./test3/log3-3.log
./test3/log3-1.log

Beschreibung:

Suchen Sie im aktuellen Verzeichnis nach Dateien mit der Endung .log. ". "Stellt das aktuelle Verzeichnis dar

Beispiel 3: Dateien entsprechend den Berechtigungen des Verzeichnisses oder der Datei suchen

Befehl:

find /opt/soft/test/ - perm 777

Ausgabe:

[root@localhost test]# find /opt/soft/test/ -perm 777
/opt/soft/test/log_link.log
/opt/soft/test/test4
/opt/soft/test/test5/test3
/opt/soft/test/test3

Anweisungen:

Dateien mit der Berechtigung 777 im Verzeichnis /opt/soft/test/ suchen

Beispiel 4 : Nach Typ Suchen

Befehl:

find . -type f -name "*.log"

Ausgabe:

[root@localhost test]# find . -type f -name "*.log"
./log2014.log
./test4/log3-2.log
./test4/log3-3.log
./test4/log3-1.log
./log2013.log
./log2012.log
./log.log
./test5/log5-2.log
./test5/log5-3.log
./test5/log.log
./test5/log5-1.log
./test5/test3/log3-2.log
./test5/test3/log3-3.log
./test5/test3/log3-1.log
./test3/log3-2.log
./test3/log3-3.log
./test3/log3-1.log
[root@localhost test]#

Erklärung:

Suchen Sie das aktuelle Verzeichnis und normale Dateien mit der Endung .log

Beispiel 5: Suchen Sie alle aktuellen Verzeichnisse und sortieren Sie sie

Befehl:

find -type d |. sort

Ausgabe:

[root@localhost test]# find . -type d | sort
.
./scf
./scf/bin
./scf/doc
./scf/lib
./scf/service
./scf/service/deploy
./scf/service/deploy/info
./scf/service/deploy/product
./test3
./test4
./test5
./test5/test3
[root@localhost test]#

Beispiel 6: Dateien nach Größe suchen

Befehl:

find . -size +1000c -print

Ausgabe:

[root@localhost test]# find . -size +1000c -print
.
./test4
./scf
./scf/lib
./scf/service
./scf/service/deploy
./scf/service/deploy/product
./scf/service/deploy/info
./scf/doc
./scf/bin
./log2012.log
./test5
./test5/test3
./test3
[root@localhost test]#

Beschreibung:

Dateien suchen, die größer als 1 KB im aktuellen Verzeichnis sind

1. Häufige Anwendungsbeispiele für find unter Linux

·find path -option [ -print ] [ -exec -ok command ] {} ;
#-print Gefundene Datei in die Standardausgabe ausgeben
#-exec command {} ; Führen Sie die Befehlsoperation für die gefundene Datei aus. Zwischen {} und
befindet sich ein Leerzeichen. #-ok ist dasselbe wie -exec, aber der Benutzer muss vor der Operation konsultiert werden ========== == ======================================= -name Dateiname #Suchen Sie die Datei mit dem Namen Dateiname
-perm                                                                                                                                                                                                                    ​​​​​ #Nach Dateiänderungszeit Nach Dateien suchen, -n bedeutet innerhalb von n Tagen, +n bedeutet vor n Tagen
-atime -n +n #Suche GIN nach Dateizugriffszeit: 0px">-perm #Suche nach Ausführungsberechtigungen
- Benutzer Benutzername #Suche nach Dateieigentümer
-Gruppe Gruppenname #Suche nach Gruppe
-mtime -n +n #Dateien durchsuchen nach Dateiänderungszeit, -n bedeutet innerhalb von n Tagen, +n bedeutet n Tage In der Vergangenheit -atime -n +N #entsprechend der Dateizugriffszeit zum Suchen von Dateien, -N bezieht sich auf innerhalb von N Tagen, +n finger
-Ctime -n +N #entsprechend der Dateierstellungszeit, um die Datei zu finden, -n bezieht sich auf innerhalb von n Tagen, +n bezieht sich auf n Tage vorher Die Hauptdatei, also der Eigentümer der Datei existiert nicht in /etc/passwd
-newer f1 !f2 Finden Sie die Datei, -n bedeutet innerhalb von n Tagen, +n bedeutet vor n Tagen
-ctime -n +n #Erstellen Sie die Datei, um die Datei zu finden, -N bezieht sich auf innerhalb von N Tagen,+n Finger vor n Tagen
-Nogramp #Findet Dateien, die keine gültige Zugehörigkeitsgruppe haben, d. h. die Dateigruppe der Datei existiert nicht in der/etc/group -NOUSER #🎜 🎜 🎜 🎜 🎜, das heißt, der Besitzer der Datei ist nicht in/etc/passwd gespeichert , Pipelines, symbolische Links, gewöhnliche Dateien
-size n [c] #Überprüfen Sie, ob die Länge n [oder n Zeichen beträgt. Die Datei des Festivals -Depth #um die Suche zu finden, nachdem Sie zuerst das Unterverzeichnis eingegeben haben, um zu finden das Verzeichnis
-fstype #um die Änderungszeit als F1 zu überprüfen, aber die alte Datei
-mount #nicht, wenn die Datei nicht auf Spannende Dateisystem-Mount-Punkte überprüft wird
-follow                #Wenn eine symbolische Linkdatei gefunden wird, folgen Sie der Datei, auf die der Link verweist
-cpio                                                                                          # Ein Verzeichnis ignorieren== =================== =========================== " [A-Z]*" -pri26nbsp; sie bis zum Bandgerät
-prune Dateien, die mit Großbuchstaben beginnen
$find /etc -name "host*" -print #Dateien prüfen, die mit host
$find -name "[a-z][ beginnen. a-z][0--9][0 --9].txt" -print #Überprüfen Sie TXT-Dateien, die mit zwei Kleinbuchstaben und zwei Zahlen beginnen
$find . -perm 755 -print
$find . -perm -007 -exec ls -l {} ; #Überprüfen Sie Dateien, die von allen Benutzern gelesen, geschrieben und ausgeführt werden können. Das Gleiche gilt für -perm 777
$find -type d usr/include -name '*.h' -. exec grep AF_INEF6 {} ; Da grep keine rekursiven Unterverzeichnisse durchsuchen kann, kann es in Kombination mit find verwendet werden. Suchen Sie die Zeichenfolge AF_INEF6
$find in den .h-Dateien in allen Unterverzeichnissen von /usr/include . -type l -print $find -size +1000000c -print #Suchen Sie nach Dateien mit einer Länge von mehr als 1 MB find . -Size 100C -PRINT # Überprüfen Sie eine Datei mit einer Länge von 100C
$ Find -Size +10 -PRINT # Überprüfen Sie die Länge der Länge von 10 Stück (1 = 512 Bytes) $ CD /
$ find etc home apps -length -print |. cpio -ivcdC65536 -o /dev/rmt0
$find /etc -name "passwd*" -exec grep "cnscn" {} ; #Überprüfen Sie, ob der cnscn-Benutzer existiert
$ find . -name "yao*" |. xargs file
$find . -name "yao*" | ========================= ====== find -name april* Finde Dateien, die mit april beginnen, im aktuellen Verzeichnis
find - name april* fprint file Finde Dateien, die mit april beginnen, im aktuellen Verzeichnis und gib die Ergebnisse in die Datei aus
find -name ap* -o -name may* Finde Dateien, die mit ap oder may beginnen
find /mnt -name tom .txt -ftype vfat Suchen Sie den Namen tom.txt und den Dateisystemtyp unter /mnt vfat file
find /mnt -name t.txt ! -ftype vfat Suchen Sie die Datei mit dem Namen tom.txt unter /mnt und der Dateisystemtyp ist nicht vfat
find /tmp -name wa* -type l Suchen Sie den Namen unter /tmp Files die mit wa beginnen und vom Typ symbolischer Link sind
find /home -mtime -2 Dateien unter /home prüfen, die in den letzten zwei Tagen geändert wurden
find /home -atime -1 -atime -1 Dateien prüfen auf die innerhalb eines Tages zugegriffen wurde
find /home -mmin +60 Dateien in /home finden, die vor 60 Minuten geändert wurden
find /home -amin +30 Dateien finden, auf die vor 30 Minuten zugegriffen wurde
find /home -newer tmp.txt Suchen Sie unter /home nach Dateien oder Verzeichnissen, deren Aktualisierungszeit aktueller ist als tmp.txt
find /home -anewer tmp.txt Directory
finde /home -used -2 ​​​​Liste die Dateien oder Verzeichnisse, auf die innerhalb von 2 Tagen nach der Änderung der Datei oder des Verzeichnisses zugegriffen wurde
find /home -user cnscn Listen Sie die Dateien oder Verzeichnisse auf, die dem Benutzer cnscn im /home-Verzeichnis gehören
find /home - uid +501 -uid Listet die Dateien oder Verzeichnisse im /home-Verzeichnis mit dem Benutzeridentifikationscode größer als 501 auf
find /home -group cnscn Listet die Dateien oder Verzeichnisse in /home auf, deren Gruppe cnscn Verzeichnis ist Suchen / Home -Gid 501 Listet die Datei oder das Verzeichnis der /home-Innengruppen-ID auf.
Suchen Sie /HOME -NOUSER. Listen Sie /Home, eine Datei oder ein Verzeichnis auf, die nicht zu lokalen Benutzern gehört.
Suchen Sie /Home -nogroup. Listen Sie die Dateien oder Verzeichnisse auf in /home, die nicht zur lokalen Gruppe gehören
find /home -name tmp.txt -max Depth 4 Listen Sie die tmp.txt in /home auf. Die maximale Tiefe der Suche beträgt 3 Ebenen
find / home -name tmp.txt -min Depth 3 Suche ab Ebene 2
find /home -empty Dateien oder leere Verzeichnisse mit einer Größe von 0 suchen
find /home -size +512k Dateien prüfen, die größer als 512k sind
find /home - size -512k Dateien mit weniger als 512 KB suchen
find /home -links +2 Dateien oder Verzeichnisse mit Hardlinks größer als 2 finden
find /home -perm 0700 Nach Dateien oder Verzeichnissen mit Berechtigungen von 700 suchen
find /tmp -name tmp.txt -exec cat {} ;
find /tmp -name tmp.txt -ok rm {} ; 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 zugegriffen wurde in den Systemdateien
find / -empty # Dateien oder Ordner finden, die im System leer sind
find / -group cat # Dateien finden, die zu groupcat im System gehören
find / -mmin -5 # Suchen im System Dateien, die in den letzten 5 Minuten im System geändert wurden
find / -mtime -1 #Dateien suchen, die in den letzten 24 Stunden im System geändert wurden >find / -user fred #Dateien suchen, die zu gehören der Benutzer FRED im System

Überprüfe alle gewöhnlichen Dateien im aktuellen Verzeichnis
---------------- ----------- --------------------------------------- ----------- --- # find . -type f -exec ls -l {} ; -r--r-- 1 Wurzel Wurzel 12959 25.02.2003 ./conf/magic
-rw-r--r-- 1 Wurzel Wurzel 180 25.02.2003 ./conf.d/README
Überprüfen Sie alle normalen Dateien im aktuellen Verzeichnis und verwenden Sie den Befehl ls -l in der Option -ex e c, um sie aufzulisten
========== =========== ===========================
Suchen Sie im /logs-Verzeichnis nach Dateien, die älter als 5 Tage sind, und löschen Sie sie:
$ find logs -type f -mtime +5 -exec -ok rm {}
=============== =========== =====================
Fragen Sie die am Tag geänderten Dateien ab
[root@book class ]# find ./ -mtime -1 -type f -exec ls -l {} ;
======================== ========== ===========
Fragen Sie die Datei ab und fragen Sie, ob Sie sie anzeigen möchten
[root@book class]# find ./ -mtime -1 - type f -ok ls -l {} ;
3ea740f4647892e65a3f42054d4901d1 y
-rw-r--r-- 1 cnscn :22 ./classDB.inc.php root@book class]# find ./ -mtime -1 -type f -ok ls -l {} ; Buchklasse]# ================================ ============ ===
Fragen Sie es ab und übergeben Sie es zur Verarbeitung an awk
[root@book class]# who | awk '{print $1"t"$2}'
cnscn pts/0 ===== ======================================= =====
awk ---grep---sed [root@book class]# df -k |. awk '{print $1}' |
sda2
sda1
[root@book class]# df -k | awk '{print $1}' | >/dev/sda1


1) Suchen Sie alle *.h in /tmp, suchen Sie in diesen Dateien nach „SYSCALL_VECTOR“ und geben Sie schließlich alle Dateinamen aus, die „SYSCALL_VECTOR“ enthalten. A) Finden Sie /tmp -name „*.h“ |
B) grep SYSCALL_VECTOR /tmp/*.h |. cut -d':' -f1| ; -print
2)find / -name Dateiname -exec rm -rf {} ;
find / -name Dateiname -ok rm -rf {} ; Zum Beispiel, wenn Sie suchen möchten Dateien, die größer als 3M sind:
find .c -exec cp '{}' /tmp ';' Wenn es spezielle Dateien gibt, können Sie cpio verwenden, oder Sie können diese Syntax verwenden:
find cpio -pdv newdir
6) Finden Sie 2004-11-30 16:36 :Datei geändert bei 37
# A=`find ./ -name "*php"` |. ls -l --full-time $A 2>/dev/null | :37

2. Verwendung des Suchbefehls unter Linux

1. Grundlegende Verwendung:

find / -name file name find ver1.d ver2.d -name '*. -print Ver1.d, ver2.d *.c-Dateien suchen und suchen. -type d -print Suchen Sie im aktuellen Verzeichnis, durchsuchen Sie nur das Verzeichnis und geben Sie den Pfadnamen aus, nachdem Sie ihn gefunden haben.

2. Suchen Sie ohne Fehler:

find / -name access_log 2 >/dev/null

3. Suche nach Größe:
find / -size 1500c (Dateien mit einer Größe von 1.500 Bytes finden, c bedeutet Wortabschnitt)
find / -size +1500c (Dateien finden, die größer als 1.500 Bytes sind, + bedeutet größer)
find / -size +1500c (Dateien finden, die kleiner als 1.500 Bytes sind, - bedeutet weniger als)
4.
find / -amin n letzte n Minuten
find / -atime n letzte n Tage
find / -cmin n letzte n Minuten Status ändern
find / -ctime n letzte Status in n Tagen ändern
5. Andere:
leere Dateien, leere Ordner, Ordner ohne Unterverzeichnisse finden / -empty
Dateien finden / -false finden, die im System immer falsch sind
Typ / -fstype finden Vorhandene Dateien finden im angegebenen Dateisystem, z. B. Typ ext2
find / -gid n Dateien mit Gruppen-ID n
find / -group gname Dateien mit Gruppennamen gname
find / - Depth n Dateiinhalte zuerst in a durchsuchen angegebenes Verzeichnis auf einer bestimmten Ebene
Suchen / -maximale Ebenen In absteigender Reihenfolge in einem bestimmten Ebenenverzeichnis suchen
6. Logik
-und-Bedingung und -oder-Bedingung oder
7. Zeichenfolge suchen
find . -name '*.html' -exec grep 'mailto:'{}



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
Vorheriger Artikel:Linux-Dateisuchbefehl findNächster Artikel:Linux-Dateisuchbefehl find