Wie verwende ich find Command unter Linux? [Ein Leitfaden für Anfänger]
In seiner Grundform ist das Finden einfach. Gleichzeitig kann die Anzahl der verfügbaren Optionen, Tests und Aktionen komplex sein.
Der Find-Befehl ist ein unglaublich leistungsfähiges Werkzeug und Putting effort Es kann lohnend sein, es zu lernen. Es hilft Ihnen bei der effizienten Ausführung verschiedener Systemverwaltungsaufgaben, wie z. B. Speicherplatzverwaltung, rekursive Dateioperationen und Backups.
Der Linux-Befehl find sucht nach Dateien und Ordnern basierend auf den von Ihnen definierten Kriterien und ermöglicht es Ihnen, eine Aktion für die Suchergebnisse auszuführen. Die Syntax von find lautet wie folgt:
$ find directory-to-search criteria action
woher
- Directory-to-Search ist der Ausgangspunkt, von dem aus find nach Dateien sucht. Die Suche umfasst alle Unterverzeichnisse in diesem Verzeichnis.
- Kriterien (Test) gibt an, nach welchen Dateien gesucht werden soll
- Die Aktion gibt an, was mit jeder gefundenen Datei zu tun ist, die den Kriterien entspricht.
Tests
Suche mit Name
Hier ist ein einfaches Beispiel. Der folgende Befehl sucht nach der Datei a.txt im aktuellen Verzeichnis:
$ find . -name "a.txt"
./a.txt
Wo
- . verweist auf das aktuelle Verzeichnis
- -name test gibt die Kriterien an, die abgeglichen werden sollen
Diese Suche mit -name test unterscheidet zwischen Groß- und Kleinschreibung und ignoriert die Datei A.txt. Um sicherzustellen, dass bei Ihrer Suche die Groß- und Kleinschreibung nicht berücksichtigt wird -iname
Test:
$ find . -iname "a.txt"
./a.txt
./A.txt
Nach allen suchen .jpg
Verwenden Sie für Bilddateien im aktuellen Verzeichnis das Platzhaltermuster *.jpg
:
$ find . -name "*.jpg"
./genxfacebook2.jpg
./genxfacebook1.jpg
./Moodle2.jpg
./moodle.jpg
./moodle/moodle1.jpg
./genxfacebook.jpg
Sie können den Verzeichnisnamen verwenden, in dem gesucht werden soll. So suchen Sie beispielsweise nach allen JPG-Bildern im Verzeichnis / home:
$ find /home -name "*.jpg"
find: `/home/ubuntu/.ssh': Permission denied
/home/vagrant/Moodle2.jpg
/home/vagrant/moodle.jpg
/home/me/hello.jpg
find: `/home/me/testfiles': Permission denied
find: `/home/me/data': Permission denied
/home/me/water.jpg
find: `/home/me/.cache': Permission denied
Wenn zu viele Fehler mit verweigerten Berechtigungen angezeigt werden, können Sie am Ende des Befehls 2> / dev / null hinzufügen. Dies leitet Fehlermeldungen an das Gerät / dev / null weiter und liefert eine sauberere Ausgabe:
find /home -name "*.jpg" 2>/dev/null
/home/vagrant/Moodle2.jpg
/home/vagrant/moodle.jpg
/home/me/hello.jpg
/home/me/water.jpg
Suche nach Dateityp
Verwendung der -type
Test können Sie Dateien nach Typ suchen. Dateitypen können sein:
f plain files
d directories
l symbolic links
b block devices
c character devices
p named pipes
s sockets
Wenn Sie beispielsweise den Testtyp d verwenden, werden nur Verzeichnisse aufgelistet:
$ find . -type d
.
./.ssh
./.cache
./moodle
Suche nach Dateigröße
Möglicherweise müssen Sie nach großen Dateien suchen und diese löschen. Im folgenden Beispiel folgt auf die Testgröße die Zeichenfolge + 1G. Dies würde nach allen Dateien suchen, die größer als 1 GB sind.
$ find . -size +1G
./Microsoft_Office_16.29.19090802_Installer.pkg
./android-studio-ide-183.5692245-mac.dmg
Das +-Zeichen bedeutet, dass Dateien gesucht werden, die größer als die folgende Zahl sind. Zur Angabe kann ein Minuszeichen (-) verwendet werdenate kleiner als. Wenn Sie kein Zeichen verwenden, bedeutet dies, dass die Größe genau übereinstimmt.
Auf die Nummer folgt die Dateigrößeneinheit. Einheiten können sein:
Charakter | Feines Gerät |
b | 521 Tschüss Blöcke |
c | Bytes |
k | Kilobyte |
M | Megabytes |
G | Gigabyte |
Durchsuchen Sie leere Verzeichnisse und Dateien
Verwenden Sie die -empty
Testen Sie, um leere Verzeichnisse und Dateien wie folgt zu finden:
$ find . -empty
./.cloud-locale-test.skip
./datafiles
./b.txt
...
./.cache/motd.legal-displayed
Suche nach Dateimodifikationszeit
Sie können nach allen Dateien und Verzeichnissen basierend auf cre suchenate oder Änderungszeit mit -cmin
Prüfung. Um nach allen Dateien zu suchen, die in den letzten 60 Minuten (weniger als 60) geändert wurden, verwenden Sie -60
so was:
$ find . -cmin -60
.
./a.txt
./datafiles
Verwenden Sie für Dateien, die vor den letzten 60 Minuten geändert wurden +60
.
Suche nach Zugriffszeit
Sie können nach Dateien nach der letzten Zugriffszeit suchen, mit -atime
Prüfung. Der folgende Befehl sucht beispielsweise nach Dateien, auf die in den letzten 180 Tagen nicht zugegriffen wurde:
$ find . -atime +180
Diese können auf ein Sicherungsgerät verschoben werden, wenn der Speicherplatz knapp wird.
Suche nach Benutzername
Mit -user Benutzername Test können Sie alle Dateien und Verzeichnisse eines Benutzers durchsuchen. Der folgende Befehl sucht beispielsweise nach allen Dateien und Verzeichnissen, die dem Benutzer ubuntu im Verzeichnis / home gehören:
$ find /home -user ubuntu 2>/dev/null
/home/ubuntu
/home/ubuntu/.bash_logout
/home/ubuntu/.bashrc
/home/ubuntu/.ssh
/home/ubuntu/.profile
Suche nach Modus
Möchten Sie nach Dateien suchen, die auf einen bestimmten Modus eingestellt sind, dh über bestimmte Berechtigungen verfügen? Verwenden Sie -perm test. Im folgenden Beispiel wird nach Dateien mit Berechtigungen gesucht, die auf 777 festgelegt sind:
$ find /home -perm 777
Betreiber
Mit den folgenden drei logischen Operatoren können Sie mehrere Tests in einem einzigen Suchbefehl kombinieren:
- -und
- -Oder
- -nicht
Der folgende Befehl sucht beispielsweise nach Dateien, die größer als 100 MB sind und dem Benutzer me gehören:
$ find /home -user me -and -size +100M 2>/dev/null
/home/me/kali-linux-2020.3-installer-netinst-i386.iso
Der folgende Befehl sucht nach Dateien, die größer als 100 MB sind und dem Benutzer me oder dem Benutzer vagrant gehören:
$ find /home \( -user vagrant -or -user me \) -and -size +100M 2>/dev/null
/home/vagrant/LibreOffice_7.0.1_Linux_x86-64_deb.tar.gz
/home/me/kali-linux-2020.3-installer-netinst-i386.iso
Sie müssen einen Backslash vor die Klammern setzen, um p zu erhaltenrevEntbinden Sie die Shell davon, sie zu interpretieren.
Aktionen
find gibt Ihnen die Suchergebnisse und dann die Möglichkeit, eine Aktion für sie auszuführen. Hier sind einige vordefinierte Aktionen:
Action | Beschreibung |
-löschen | Löscht Dateien, die den Suchkriterien entsprechen |
-ls | Zeigt eine detaillierte ls-Ausgabe mit Dateigrößen und Inode-Anzahl |
Zeigt den vollständigen Pfadnamen der übereinstimmenden Dateien an. Dies ist die Standardaktion, wenn keine andere Aktion angegeben ist | |
-Exec | Führt den folgenden Befehl in jeder Zeile der Suchausgabe aus |
Wenn Sie also nach allen leeren Dateien suchen und diese löschen möchten, gehen Sie wie folgt vor:
$ find . -empty -delete
Achtung: Bevor Sie die Löschaktion verwenden, können Sie den Befehl immer einmal sicher ausführen -print
Aktion und bestätigen Sie die Ergebnisse.
Der -exec
Aktion ist etwas Besonderes. Damit können Sie einen Befehl Ihrer Wahl in den Suchergebnissen ausführen. Es ist so:
-exec <em>command</em> {} \;
Hier
- Befehl ist der Befehl, den Sie für die Suchergebnisse ausführen möchten, z. B. rm, mv oder cp.
- {} repräsentiert die Suchergebnisse.
- Der Befehl endet mit einem Semikolon, das mit einem Backslash versehen ist.
Der Befehl zum Suchen und Löschen aller leeren Dateien kann also folgendermaßen geschrieben werden:
$ find . -empty -exec rm {} \;
Hier ist ein weiteres Beispiel mit -exec
Aktion. Der folgende Befehl kopiert alle .png
Bilddateien in das Verzeichnis backup / images:
$ find . -name "*.png" -exec cp {} /backups/images \;
Schlussfolgerung
Sie können die Verwendung Linux-Suchbefehl um nach Dateien anhand des Namens und des letzten Zugriffs zu suchen. date, letzte Änderung date, Benutzername (Eigentümername), Gruppenname, Größe, Berechtigungen und verschiedene andere Kriterien. Mit diesen Suchergebnissen können Sie Aktionen wie Löschen, Kopieren oder Verschieben an einen anderen Ort durchführen.
Sobald Sie den Befehl find beherrschen, kann er eine große Hilfe sein und vereinfachen Systemadministration Aufgaben für Sie. Und der Schlüssel, um es zu meistern, ist es zu üben und es zu benutzen!