Der Suchbefehl wird verwendet, um Dateien im angegebenen Verzeichnis zu finden. Jede Zeichenfolge vor dem Parameter wird als Name des zu durchsuchenden Verzeichnisses behandelt. Wenn Sie diesen Befehl verwenden, ohne Parameter festzulegen, sucht der Befehl „find“ nach Unterverzeichnissen und Dateien im aktuellen Verzeichnis. Und alle gefundenen Unterverzeichnisse und Dateien werden angezeigt.
Syntax
find(option)(parameter)
Optionen
-amin
-anewer
-cmin
-cnewer
- Tiefe: Beginnen Sie mit der Suche im tiefsten Unterverzeichnis im angegebenen Verzeichnis. -Expty: Suchen Sie nach Dateien mit einer Dateigröße von 0 Byte oder einem leeren Verzeichnis ohne Unterverzeichnisse oder Dateien 🎜 >-exec
-fls
-follow: Symbolische Links ausschließen ;
-fprint: Die Wirkung dieses Parameters ähnelt der Angabe des Parameters „-print“, aber das Ergebnis wird in der angegebenen Listendatei gespeichert
-fprint0< ;Listendatei>: Dieser Parameter hat einen ähnlichen Effekt wie die Angabe des Parameters „-print0“, das Ergebnis wird jedoch in der angegebenen Listendatei gespeichert
-fprintf
-fstype
-iname
-ls: Angenommen, der Rückgabewert des Suchbefehls ist „True“, listet die Datei- oder Verzeichnisnamen in der Standardausgabe auf. mintiefe
-mmin
-mount: Die Die Wirkung dieses Parameters ist die gleiche wie bei der Angabe von „-xdev“; Suche nach Dateien oder Verzeichnissen, die zum angegebenen Zeitpunkt geändert wurden 🎜>
-name-print: Unter der Annahme, dass der Rückgabewert des Suchbefehls True ist, listen Sie den Datei- oder Verzeichnisnamen in der Standardausgabe auf. Das Format ist ein Name für jede Spalte, und vor jedem Namen steht eine Zeichenfolge „./“.
-print0: Angenommen, der Rückgabewert des Suchbefehls ist True, listen Sie die Datei- oder Verzeichnisnamen auf die Standardausgabe. Das Format ist, dass sich alle Namen in derselben Zeile befinden.
-printf
-prune: Suchen Sie nicht nach einer Zeichenfolge als Vorlagenstil für die Suche nach Dateien oder Verzeichnissen.
-regex
-size
-true: Alle Rückgabewerte festlegen der Suchbefehl auf True;
-typ
-uid
-used
-user< ;Besitzername>: Suchen Sie die Datei oder das Verzeichnis mit dem angegebenen Besitzernamen; -version oder --version: Versionsinformationen anzeigen
-xdev: Beschränken Sie den Bereich auf das vorherige Dateisystem ;
-xtype
Parameter
Startverzeichnis: Das Startverzeichnis für die Suche nach Dateien.
Beispiel
Übereinstimmung basierend auf Dateien oder regulären Ausdrücken
Alle Dateien und Ordner im aktuellen Verzeichnis und den Unterverzeichnissen auflisten
finden .
Suchen Sie den Dateinamen, der mit .txt endet, im /home-Verzeichnis
finde /home -name "*.txt"
Das gleiche wie oben, aber ignoriere die Größe Schreiben Sie
find /home -iname "*.txt"
Suchen Sie alle Dateien, die mit .txt und .pdf im aktuellen Verzeichnis und den Unterverzeichnissen enden
find ( - name "*.txt" -o -name "*.pdf" )
oder
find . -name "*.txt" -o -name "*.pdf"
Dateipfad oder Datei abgleichen
find /usr/ -path "*local*"
Dateipfad basierend auf regulärem Ausdruck abgleichen
find . -regex ". * (.txt|.pdf)$"
Wie oben, aber Groß- und Kleinschreibung ignorieren
find . -iregex ".*(.txt|.pdf)$"
Negative Parameter
Dateien in /home finden, die nicht mit .txt enden
find /home ! -name "*.txt"
Suche basierend auf dem Dateityp
Typparameter vom Typ . finden
Liste der Typparameter:
f gewöhnliche Datei
l symbolischer Link
d Verzeichnis
c-Zeichen-Gerät
b-Block-Gerät
s-Sockel
p Fifo basierend auf der Verzeichnistiefensuche
basierend auf der Verzeichnistiefensuche
Die maximale Tiefengrenze nach unten beträgt 3
find . -max Depth 3 -type f
Sucht alle Dateien, deren Tiefe mindestens 2 Unterverzeichnisse aus dem aktuellen Verzeichnis beträgt
find . -min Depth 2 -type f
Suche basierend auf dem Dateizeitstempel
find . -type f Timestamp
Das UNIX/Linux-Dateisystem hat drei Zeitstempel für jede Datei:
Zugriffszeit (-atime/day, -amin/minute):
Die letzte Zugriffszeit des Benutzers.
Änderungszeit (-mZeit/Tag, -mmin/Minute):
Die letzte Änderungszeit der Datei.
Änderungszeit (-ctime/Tag, -cmin/Minute):
Die letzte Änderungszeit von Dateidatenelementen (wie Berechtigungen usw.).
Suche nach allen Dateien, auf die in den letzten sieben Tagen zugegriffen wurde
find -type f -atime -7
Suche nach allen Dateien, auf die genau sieben Tage zugegriffen wurde vor
find . -type f -atime 7
Suche nach allen Dateien, auf die innerhalb von mehr als sieben Tagen zugegriffen wurde
find . -type f -atime +7
Suchen Alle Dateien finden, auf die länger als 10 Minuten zugegriffen wurde
find . -type f -amin +10
Alle Dateien finden, die länger als Datei geändert wurden. log
find . -type f -newer file.log
Übereinstimmung basierend auf der Dateigröße
find . -type f -size
Dateigrößeneinheit Dateigrößeneinheit:
b – Block (512 Bytes)
c – Byte
w – Wort (2 Bytes)
k – Kilobyte
M – Megabyte
G – Gigabyte
Suche nach Dateien, die größer als 10 KB sind
find . -type f -size +10k
Suche für Dateien mit weniger als 10 KB
finden Sie . -type f -size -10k
Suchen Sie nach Dateien mit einer Größe von 10 KB
finden Sie . -type f -size 10k
Übereinstimmende Dateien löschen
Alle .txt-Dateien im aktuellen Verzeichnis löschen
find . -type f -name "*.txt" -delete
Je nach Datei Berechtigungs-/Eigentümerübereinstimmung
Suche nach Dateien mit der Berechtigung 777 im aktuellen Verzeichnis
find . -type f -perm 777
Finde die PHP-Dateien mit anderen Berechtigungen als 644 im aktuellen Verzeichnis
find . -type f -name "*.php" ! perm 644
Alle Dateien finden, die dem Benutzer Tom im aktuellen Verzeichnis gehören
find -type f -user tom
Alle Dateien finden, die der Benutzergruppe gehören, die im aktuellen Verzeichnis versunken ist Verzeichnis
find . -type f -group sunk
Verwenden Sie die Option -exec in Verbindung mit anderen Befehlen, um alle Root-Dateien im aktuellen Verzeichnis zu finden und den Besitzer auf Benutzer tom zu ändern
find .-type f -user root
-exec chown tom {} ;
Im obigen Beispiel wird {} in Verbindung mit der Option -exec verwendet, um alle Dateien abzugleichen. und wird dann durch den entsprechenden Dateinamen ersetzt.
Suchen Sie alle .txt-Dateien in Ihrem Home-Verzeichnis und löschen Sie sie
suchen Sie $HOME/
-name „*.txt“
-. ok rm {} ;
Im obigen Beispiel hat -ok das gleiche Verhalten wie -exec, fragt jedoch ab, ob der entsprechende Vorgang ausgeführt werden soll.
Alle .txt-Dateien im aktuellen Verzeichnis finden und in der all.txt-Datei verketten
find . -type f -name "*.txt" -exec cat {} ;> all.txt
Verschiebe die .log-Datei vor 30 Tagen in das alte Verzeichnis
find . -type f -mtime +30 -name "*.log" -exec cp {} old ;
Suchen Sie alle .txt-Dateien im aktuellen Verzeichnis und drucken Sie sie in der Form „Datei: Dateiname“ aus.
find . -type f -name „*.txt“ – exec printf "Datei: %sn" {} ;
Da im Parameter -exec in einem einzeiligen Befehl nicht mehrere Befehle verwendet werden können, kann die folgende Methode nach
-exec
-exec ./text.sh {} ;Suchen, aber aus dem angegebenen Verzeichnis springen Suchen Sie nach allen .txt-Dateien im aktuellen Verzeichnis oder Unterverzeichnis, aber überspringen das Unterverzeichnis sk find . -path "./sk" -prune -o -name "*.txt" -print findSonstige Tipps-Sammlung Um alle aufzulisten Längen Null Dateien find . -empty