Der Befehl Linux find
ist ein leistungsstarkes Tool, mit dem Systemadministratoren Dateien und Verzeichnisse anhand einer Vielzahl von Suchkriterien suchen und verwalten können. Es kann Verzeichnisse und Dateien nach ihrem Namen, ihrem Typ oder ihrer Erweiterung, Größe, Berechtigungen usw. finden.
Neben dem Auffinden von Dateien und Verzeichnissen können Sie durch die Kombination des Befehls find
mit anderen Maßnahmen zu den Ergebnissen ergreifen., Durch Hinzufügen der Option -exec
können Systemadministratoren externe Befehle ausführen und Aktionen wie Kopieren, Verschieben, Löschen oder Ändern der Berechtigungen der Dateien ausführen, die den angegebenen Kriterien wie Größe, Name usw. entsprechen.
In diesem Artikel erklären wir zunächst die grundlegenden Linux find-Befehle mit Beispielen. Dies zeigt Ihnen, wie Sie Dateien und Verzeichnisse finden. Wir zeigen Ihnen dann, wie Sie mit der Option -exec
die Dateien oder Verzeichnisse basierend auf ihrer Größe, ihren Berechtigungen usw. bearbeiten können.,
Die allgemeine Syntax für den Befehl find lautet
find {path} {name -of-file or dir-to-search} {action-to-take}
Wobei
In diesem Tutorial erklären wir, wie Sie Dateien und Verzeichnisse finden, die den angegebenen Mustern entsprechen. Wir werden auch sehen, wie Aktionen für die Dateien oder Verzeichnisse ausgeführt werden, die der Befehl find sucht. Das Handbuch basiert auf Ubuntu, ist aber auf die meisten Linux-Distributionen und-Versionen anwendbar.
Dateien und Verzeichnisse suchen
Bestimmte Dateien nach Namen oder Erweiterung suchen
Um nach einer bestimmten Datei zu suchen, führen Sie den folgenden Befehl im Stammverzeichnis aus (/)., Der Befehl enthält den genauen Namen für die gesuchte Datei.
find . -name file22.txt
Ausgabe
./test/file22.txt./sales/file22.txt
Bitte beachten Sie, dass die Ergebnisse den Pfad enthalten. Dies ist wichtig, wenn Sie das Verzeichnis nicht kennen, in dem sich die Datei befindet, oder wenn sie sich an mehr als einem Ort befindet.
Sie können die Datei auch in einem anderen Verzeichnis suchen, während Sie sich noch am aktuellen Speicherort befinden. In diesem Fall müssen Sie den Pfad für das Verzeichnis angeben, in dem Sie suchen möchten.,
find ./test -name file22.txt
Suche nach bestimmten Dateien in einem anderen Verzeichnis
In unserem Fall werden wir nach allen suchen, die mit den Buchstaben beginnen Datei im Testverzeichnis.
find ./test -name file*
Ausgabe
./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc
Suche nach Dateien nach Erweiterung
Um eine Datei in Linux mit einer bestimmten Erweiterung zu finden, fügen Sie sie dem Befehl hinzu.,
find . -name *.txt
Ausgabe
./test/subtest/subfil.txt./test/file22.txt./test/file1.txt./home1/files32.txt./home2/file22.txt./qa/tags.txt
Suchen Sie Dateien und Verzeichnisse nach Namen
Suchen Sie mit dem folgenden Befehl nach Dateien und Verzeichnissen, beginnend mit den Buchstaben qa
. In unserem Computer haben wir dieqatree.txt
undqa.txt
Dateien sowie ein Verzeichnis mit dem Namenqa
.,
Wenn wir den Befehl ausführen;
find ./ -name "qa*"
Es wird die folgende Ausgabe zurückgegeben
./test/qatree.pdf./test/qa.txt./home/qa
Der Befehl gibt sowohl die Dateien als auch die Verzeichnisse zurück, die den Suchkriterien entsprechen. Um nur Dateien oder Verzeichnisse zu finden, müssen Sie dies im Befehl angeben.
Nur Dateien oder Verzeichnisse suchen
Nur für Dateien verwenden Sie den Schalter type f
.
Nur Dateien
find ./ -type f -name "qa*"
Ausgabe
./test/qatree.pdf./test/qa.txt
Nur Verzeichnisse
Fügen Sie die Option type d
hinzu, um nur Verzeichnisse zu finden.,
find ./ -type d -name "qa*"
Output
./home/qa
Groß-und Kleinschreibung suchen Befehl
Alle Suchvorgänge mit -name
switch sind groß-und Kleinschreibung empfindlich und geben keine Ergebnisse mit Großbuchstaben. Verwenden Sie zum Abrufen aller Fälle die Option -iname
.
find ./ -iname "qa*"
Ausgabe
./test/qatree.pdf./test/qa.txt./test/QAtest.txt./home/qa
Suche nach einer Datei aus mehreren Verzeichnissen
Um die Dateien in verschiedenen Verzeichnissen zu finden, fügen Sie ihre Pfade in den Befehl ein., In unserem Fall überprüfen wir die Verzeichnisse test
und numeric
.
find ./test ./numeric -name file22.txt -type f
Ausgabe
./test/file22.txt/root/numeric/file22.txt
Suchen Sie mehrere Dateien mit unterschiedlichen Erweiterungen aus allen Verzeichnissen
Mit dem Befehl suchen können Sie mehrere Dateien suchen, die die verschiedenen Erweiterungen gemeinsam nutzen, z. B. *.doc
, *.txt
*.pdf
usw. Dies kann separat erfolgen, jeweils eine Erweiterung oder mit nur einem Befehl, der alle gewünschten Erweiterungen enthält.,
find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )
Ausgabe
Dateien suchen, die bestimmten Text enthalten
Manchmal möchten Sie auf eine Datei zugreifen, die bestimmten Text enthält, können sich aber nicht an den Dateinamen oder Speicherort erinnern. Mit diesem Befehl können Sie alle Dateien finden, die Ihren Zieltext enthalten.
Um nach allen Dateien zu suchen, die das Wort Hyperkonvergenz enthalten, verwenden Sie;
find / -type f -exec grep -l -i "hyperconvergence" {} ;
Output
/root/numeric/hci/root/HCIP
Mit der Option-i kann der Befehl Fälle ignorieren und den Text finden, ob großgeschrieben oder nicht , dh Hyperkonvergenz, Hyperkonvergenz usw.,
Um nach Dateien in einem bestimmten Verzeichnis zu suchen, fügen Sie sie einfach dem Befehl
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
Output
./numeric/hci
Dateien und Verzeichnisse nach Größe suchen
Sie können alle Dateien oder Verzeichnisse finden, die kleiner, gleich oder größer als eine bestimmte Größe sind, innerhalb eines bestimmten Bereichs oder leer. Verwenden Sie je nach Art der gesuchten Dateien oder Verzeichnisse das entsprechende Format.,nd Dateien einer bestimmten Größe – gleich 30 MB
Zu suchen Finden Sie alle 30 MB Dateien
find / -size 30M
Finden Sie Dateien größer als eine angegebene Größe
find -size +2M
Ausgabe
. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c
Finden Sie Dateien kleiner als 10 MB im aktuellen Verzeichnis
find . -type f -size -10M
Suchen Sie Dateien mit Größen zwischen 100-200MB
Wenn Sie nach Dateien in einem bestimmten Bereich suchen, z. B. zwischen 100 und 200 MB
find / -size +100M -size -200M
Suchen Sie nach Verzeichnissen, die größer als 20kb sind
find / -type d -size +20k
Suchen Sie leere Dateien und Verzeichnisse.,
Dateien
find ./ -type f -size 0
oder
find ./ -type f –empty
Verzeichnisse
find ./ -type d –empty
Dateien nach Alter oder Änderungszeit suchen
Dateien finden, die älter als n Tage sind
find /path/ -type f -name '*.txt' -mtime +8
Die -mtime +8
sucht nach txt
Dateien, die älter als 8 Tage sind.,
Nach Änderungsdatum
Dies sucht nach Dateien, die innerhalb der letzten 17 Stunden geändert wurden
find . -mtime -17 -type f
Sucht nach Verzeichnissen, die innerhalb der letzten 10 Tage geändert wurden
find . -mtime -10 -type d
Suchen Sie Dateien basierend auf Zugriff oder Änderung
Suchen Sie Dateien basierend auf dem Datum oder der Uhrzeit des Zugriffs. Auf diese Weise können Sie Dateien anzeigen, auf die innerhalb eines bestimmten Zeitraums zugegriffen wurde oder nicht.
Zum Anzeigen von Dateien, auf die in den letzten 10 Tagen nicht zugegriffen wurde, im Home-Verzeichnis.,
find /home -atime +10
– Dateien zugegriffen genau 10 Tagen
find /home -atime 10
Zugegriffen, die innerhalb der letzten 10 Tage
find /home -atime -10
die Dateien, die innerhalb der letzten n Tage
Sie können auch suchen Sie die Dateien in das /home
Verzeichnis geändert, in den letzten 10 Tagen der Verwendung des Befehls;
find /home -mtime -10
die Dateien in einem bestimmten Zeitraum.
Zum Beispiel alle Dateien, die vor 6 bis 15 Tagen im Home-Verzeichnis geändert wurden.,
find /home -type f -mtime +6 -mtime -15
Dateien und Verzeichnisse, auf die in den letzten 10 Minuten zugegriffen wurde
Um die Dateien zu finden, auf die in den letzten 10 Minuten zugegriffen wurde, verwenden Sie die Option-amin.
find . -amin -10 -type f
Ausgabe
./.bash_history./.profileroot@ubuntu1804:~#
Verzeichnisse, auf die innerhalb der letzten 10 Minuten zugegriffen wurde
find . -amin -10 -type d
Finden Sie Dateien, die bestimmten Berechtigungen entsprechen
Syntax
$ find -perm mode
Wobei mode die Berechtigung ist, die entweder numerisch ist, wie 644, 655, 700, 777
usw. oder Buchstaben wie u=x, a=r+x,
usw.,
Sie können den Modus auf drei verschiedene Arten festlegen.
- Ohne Präfix, wenn Sie Dateien mit den genauen angegebenen Berechtigungen finden möchten.
- Mit“
-
“ für Dateien mit mindestens der angegebenen Berechtigung. Dies gibt Dateien mit den angegebenen sowie zusätzlichen höheren Berechtigungen zurück. - Die Verwendung von „
/
“ erfordert die Angabe des Eigentümers oder der Gruppe mit der Berechtigung für die Datei.,
Suchen Sie Dateien mit der Berechtigung 777
find -perm 777
Ausgabe
./file1
Suchen Sie Dateien mit mindestens 766
find-perm -766
Ausgabe
./file2./file1
Der Befehl sucht nach allen Dateien, in denen
- Der Dateieigentümer Lese – /Schreib – /Ausführungsberechtigungen besitzt.
- Gruppe hat Lese – / Schreibberechtigungen
- Andere haben Lese – / Schreibberechtigung
Als solche gibt es zwei Dateien zurück, die dieses Kriterium erfüllen – Datei1 und Datei2., Die Dateien müssen nicht die genauen 766
Berechtigungen haben und können zusätzliche haben, müssen aber mindestens die angegebenen haben.
Dateien finden, die vom Eigentümer beschreibbar sind
Wir werden jetzt die „/
“ verwenden, um nach Dateien zu suchen, die entweder von ihrem Besitzer oder ihrer Gruppe oder anderen beschreibbar sind.
find -perm /222../file2./file3./file1
Das obige sucht nach Dateien, die entweder von ihrem Besitzer oder ihrer Gruppe beschreibbar sind.
Dies gibt die Dateien, die geschrieben werden, indem Sie entweder, aber nicht unbedingt beide. Verwenden Sie das Präfix–, um Dateien anzuzeigen, für die beide beschreibbare Berechtigungen haben.,
./file2./file1
Finden Sie Dateien im Besitz eines Benutzers
Finden Sie alle Dateien im Besitz von Jack
find /home -user jack
Ausgabe
/home/jack/home/jack/examples.desktop/home/jack/.gnupg/home/jack/.gnupg/private-keys-v1.d/home/jack/ans.cgi
Suchen Sie bestimmte Dateien im Besitz eines Benutzers
Finden Sie alle Textdateien im Besitz von Jack
find /home -user jack -iname "*.txt"
Ausgabe
/home/jack/docs/file32.txt
Suchen und Auflisten von Dateien und Verzeichnissen zusammen mit ihren Berechtigungen
find -name "*.conf" | ls -l
Ausgabe
Suchen und handeln Sie nach den Ergebnissen
In diesem Abschnitt werden wir untersuchen, wie Sie auf die Dateien reagieren können, die dem im Befehl suchen angegebenen Muster entsprechen.,
Dateien suchen und Berechtigungen ändern
Berechtigungen bestimmter Dateitypen suchen und ändern. In unserem Fall arbeiten wir mit PHP-Dateien mit unterschiedlichen Berechtigungen wie unten gezeigt.,
Wir suchen nun nach allen PHP-Dateien (oben) und ersetzen ihre Berechtigungen durch 755
find ver -name "*.php" -type f -exec chmod 755 {} ;
Der Befehl sucht nach PHP-Dateien im Verzeichnis ver
und setzt dann ihre Berechtigung auf 755
(rwxr-xr-x
)
Ergebnisse
Datei-und Verzeichnisberechtigungen suchen und ändern
Dateien mit 644 Berechtigungen suchen und in 655 Berechtigungen ändern
find . -type f -perm 644 -exec chmod 655 {} ;
Sie können auch nach Verzeichnissen mit 644 Berechtigungen suchen und diese durch 755 ersetzen.,
find . -type d -perm 644
Ausgabe
./docs
Der Ordner docs hat 644 Berechtigungen
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
Um ihn auf 755
zu setzen, führen wir
find . -type d -perm 644 -exec chmod 755 {} ;
Jetzt können wir noch einmal überprüfen, was genau 755
find . -type d -perm 755
Output
.
./docs
Von oben können wir sehen, dass die Verzeichnisse root und docs die Berechtigungen 755 haben.,
Ls –la
Befehl gibt die folgenden Details
drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs
Suchen und Kopieren von Dateien oder Verzeichnissen
Suchen und kopieren Sie eine bestimmte Datei in ein Verzeichnis
Der folgende Befehl findet diefile22.tx
t Datei und kopieren Sie sie in die~/tmp/images
Verzeichnis.,
find -iname file22.txt -exec cp {} ~/tmp/images ;
Suchen und kopieren Sie einen Dateityp in ein Verzeichnis
Um Dateien wie Bilder mit jpg
– Erweiterung im aktuellen Verzeichnis zu finden und sie an einen anderen Speicherort wie einen Bilderordner zu kopieren, verwenden Sie;
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
Dies findet und kopiert alle JPG-Dateien in die ~/tmp/images
Ordner.
Suchen und kopieren Sie eine Datei in viele Verzeichnisse
Suchen und kopieren Sie eine einzelne Datei in mehrere Verzeichnisse.,
find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;
Dadurch wird die Datei hci-Datei gefunden und in die drei Verzeichnisse /tmp/dir1/ /tmp/dir2/
und $HOME/3/
Dateien suchen und in ein anderes Verzeichnis verschieben
Um eine bekannte Datei von einem Verzeichnis in ein anderes zu verschieben., Um die universal.php
– Datei zu verschieben;
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
Suchen und Verschieben Sie Dateien mit einer bestimmten Erweiterung in einen anderen Ordner
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
Suchen Sie bestimmte Dateien und verschieben Sie Sie sie in einen bestimmten anderen Ordner
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
Der Befehl sucht nach allen Dateien mit Namen beginnend mit uni
und mit einer beliebigen Erweiterung. Es verschiebt sie dann in das Verzeichnis /unifiles/
Suchen und Verschieben von Dateien basierend auf dem Alter
Suchen und Verschieben von Dateien, die älter als angegeben sind Tage an einen anderen Ort wie das Archiv.,
find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;
Dadurch werden PDF-Dateien gesucht, die älter als 20 Tage sind, und in das backup1-Verzeichnis verschoben.,dateien und Verzeichnisse
Die Syntax zum Suchen und Entfernen von Dateien oder Verzeichnissen im aktuellen Verzeichnis lautet
find . -type f -name "file to delete" -exec rm -f {} ;
zum Löschen von Dateien oder
find . -type d -name "dir-to-delete" -exec rm -rf {} ;
zum Löschen von Verzeichnissen nur
Nur bestimmte Dateien suchen und löschen
Zum Suchen und Löschen von Dateien ab til, use;
find . -type f -name "til*" -exec rm {} ;
Zum Suchen und Löschen von Verzeichnissen, die mit til beginnen
find . -type d -name "til*" -exec rm {} ;
Entfernen Sie sowohl Dateien als auch Verzeichnisse
find . -name "til*" -exec rm -rf {} ;
Dadurch werden sowohl Dateien als auch Verzeichnisse entfernt, die mit den Buchstaben til beginnen.,
Delete by extension
So finden und löschen Sie alle txt
Dateien im aktuellen Verzeichnis. Ersetzen Sie die txt
durch eine andere Erweiterung wie bak
, pdf
oder eine andere, die Sie entfernen möchten.
find . -type f -name "*.txt" -exec rm -f {} ;
Falls das System Sie vor dem Löschen jeder Datei zur Bestätigung auffordern soll, fügen Sie die Option-i wie folgt hinzu.,
find . -type f -name "*.txt" -exec rm -i {} ;
Ausgabe
Standardmäßig entfernt die -rm
die Verzeichnisse nicht und Sie müssen die Option –r
verwenden, um eine rekursive Entfernung sicherzustellen. Dies gewährleistet das Löschen leerer Verzeichnisse und solcher, die Dateien enthalten. Die Option -f
erzwingt das Entfernen und wird sowohl für Dateien als auch für Verzeichnisse verwendet.
Suchen und Löschen von Dateien, die älter als n Tage sind
Suchen und Löschen von Sicherungsdateien, die älter als 20 Tage sind, aus dem aktuellen Verzeichnis.,
find . -type f -name '*.bak' -mtime +20 -exec rm {} ;
Dadurch werden alle .bak
Dateien gelöscht, die älter als 20 Tage sind.
Nur Verzeichnisse suchen und löschen
Zum Löschen eines Verzeichnisses mit dem Namen
find . -type d -name dir22 -exec rm -rf {} ;
Stellen Sie sicher, dass Sie mit dem Fall des Verzeichnisnamens übereinstimmen, oder verwenden Sie die Option -iname
.
find . -type d -iname Dir22 -exec rm -rf {} ;
Entfernt sowohl Dir22
als auch
Um vor dem Löschen zu bestätigen, verwenden Sie die Option-i.
find . -type d -iname Dir22 -exec rm -rf -i {} ;
Ausgabe
rm: Verzeichnis entfernen ‘./Dir22′?, n
rm: Verzeichnis entfernen ‘./dir22′? y
In unserem Fall haben wir n
für das Verzeichnis Dir22
eingegeben, das nicht gelöscht wird, und y
für die , die jetzt entfernt wird.
Leere Dateien suchen und entfernen
Mit einem der folgenden Befehle können Sie leere Dateien suchen und automatisch löschen.
find ./ -type f -size 0 -exec rm -f {} ;
oder
suchen ./ – Typ f-Größe 0 / xargs rm-f
oder
finden .,/ – Typ f-Größe 0-Löschen
Leere Verzeichnisse suchen und entfernen
Um leere Verzeichnisse zu entfernen, verwenden wir die Option d
.
find ./ -type d -empty -exec rmdir {} ;
Eine weitere Alternative ist die Verwendung von delete anstelle von remove.
find ./ -type d -empty -delete
Bitte beachten Sie, dass das Löschen von System-oder kritischen Dateien von Ihrem Computer das Betriebssystem oder Anwendungen beschädigen oder zum Verlust Ihrer wichtigen Daten führen kann.
Um versehentliches Löschen zu vermeiden, empfiehlt es sich, ein Nicht-Root-Benutzerkonto zu verwenden., Stellen Sie außerdem sicher, dass Sie die richtigen Dateien löschen, die nicht nützlich sind, und dass Sie für alle Fälle eine Sicherungskopie aller Ihrer Datendateien haben.
What ‚ s next?
Probieren Sie die obigen Linux-Suchbefehle in Ihrer Labor-oder Nichtproduktionsumgebung aus. Überprüfen Sie, ob Sie einige verwenden können, um die Dateisystembereinigung mit Crontab zu automatisieren. Und um Linux zu beherrschen, schauen Sie sich diesen Online-Kurs an.