Der Befehl find wird dafür verwendet, Dateien und/oder Verzeichnisse zu "finden".
Dabei können dem Befehl durch Optionen die unterschiedlichsten Suchkriterien übergeben werden. Beispielsweise kann man das Suchergebnis aufgrund der Dateigröße, der Art (Datei, Verzeichnis), dem Bearbeitungsdatum und vielem mehr beschränken.
| Befehl | STARTVERZEICHNIS | [SUCHKRITERIEN] | [AKTIONEN] |
|---|---|---|---|
| find | find durchsucht "ab" diesem Verzeichnis alle Unterverzeichnisse (sofern nicht eingeschränkt). | ohne Kriterium wird jedes Verzeichnis und jede Datei an die Aktion übergeben. Ist ein Suchkriterium definiert wird das Objekt nur dann an die Aktion weitergeleitet wenn es die Bedingung erfüllt. |
Angabe darüber was mit dem Objekt geschehen soll wenn das Suchkriterium zugetroffen hat. |
Beispiele | |||
| find | |||
findet ab dem aktuellen Arbeitsverzeichnis alle Dateien und alle Verzeichnisse in allen Unterverzeichnissen. STARTVERZEICHNIS wird automatisch zum aktuellen Verzeichnis ( . ) - ACHTUNG! Funktioniert nur bei aktuellen Versionen SUCHKRITERIUM ist immer true/wahr AKTION wird automatisch zu -print also Ausgabe auf den Bildschirm | |||
| find | ~/Downloads | -name "*.zip" | |
Findet im Downloads Verzeichnis alle ZIP-Dateien und gibt diese auf den Bildschirm aus
| |||
| find | ~/Downloads | -name "*.zip" -size +10M | |
Findet im Downloads Verzeichnis alle ZIP-Dateien die größer als 10MB sind und gibt diese auf den Bildschirm aus
| |||
| find | ~/Downloads | -name "*.zip" -size +10M | -delete |
Findet im Downloads Verzeichnis alle ZIP-Dateien die größer als 10MB sind und löscht diese
| |||
| find | ~/Downloads | -name "*.zip" -size +10M | -print -delete |
Findet im Downloads Verzeichnis alle ZIP-Dateien die größer als 10MB sind, gibt sie auf den Bildschirm aus und löscht sie anschließend.
| |||
| find | . | -ls | |
Zeigt alle gefundenen Dateien und Verzeichnisse in einer ähnlichen Darstellung an wie der Befehl ls -l
| |||
Formatierung der Ausgabe mit der Aktion -printf | |||
| find | . | -printf FORMATSTRING | |
Mit der Aktion -printf kann gezielt gesteuert werden, wie die Ausgabe der gefunden Objekte auszusehen hat. Dies erfolgt durch die Übergabe eines so genannten Format-Strings. Also eine Zeichenkette welche als Vorlage für die Ausgabe dient. Im Formatstring können beliebige Texte ebenso enthalten sein, wie "Platzhalter" für Attribute der gefundenen Objekte. Einige oft verwendete Platzhalter:
| |||
| find | . | -size +100k | -printf "%f\t%k\n" |
Alle Dateien über 100KB. Ausgegeben wird der Basename und die Größe in KB Tabulatorgetrennt.
zaunerj@linux01:~/example-data$ find . -size +100k -printf "%f\t%k\n" sample_960x540.mp4 1292 bug-fixing-ways.jpg 132 384-5184x3456.jpg 3280 1054-3079x1733.jpg 832 366-4000x3000.jpg 664 718-2274x1440.webp 228 1038-3914x5863.jpg 3264 1039-6945x4635.jpg 4432 423-5184x3456.jpg 1864 | |||
| find | . | -size +100k | -printf "%f\t%k\t%h\n" |
Beispiel von oben um die Ausgabe des Verzeichnisses erweitert
zaunerj@linux01:~/example-data$ find . -size +100k -printf "%f\t%k\t%h\n" sample_960x540.mp4 1292 ./media/videos bug-fixing-ways.jpg 132 ./media/bilder 384-5184x3456.jpg 3280 ./media/picsum-photos 1054-3079x1733.jpg 832 ./media/picsum-photos 366-4000x3000.jpg 664 ./media/picsum-photos 718-2274x1440.webp 228 ./media/picsum-photos 1038-3914x5863.jpg 3264 ./media/picsum-photos 1039-6945x4635.jpg 4432 ./media/picsum-photos 423-5184x3456.jpg 1864 ./media/picsum-photos | |||
| find | . | -size +100k | -printf "%u\t%f\t%k\t%h\n" |
Beispiel von oben um die Ausgabe des Besitzers am Beginn erweitert.
zaunerj@linux01:~/example-data$ find . -size +100k -printf "%u\t%f\t%k\t%h\n" zaunerj sample_960x540.mp4 1292 ./media/videos zaunerj bug-fixing-ways.jpg 132 ./media/bilder zaunerj 384-5184x3456.jpg 3280 ./media/picsum-photos zaunerj 1054-3079x1733.jpg 832 ./media/picsum-photos zaunerj 366-4000x3000.jpg 664 ./media/picsum-photos zaunerj 718-2274x1440.webp 228 ./media/picsum-photos zaunerj 1038-3914x5863.jpg 3264 ./media/picsum-photos zaunerj 1039-6945x4635.jpg 4432 ./media/picsum-photos zaunerj 423-5184x3456.jpg 1864 ./media/picsum-photos | |||
| find | . | -size +100k | -printf "user: %u\t%f\t%k\t%h\n" |
Beispiel von oben um die Ausgabe eines normalen Textes (user:) erweitert.
zaunerj@linux01:~/example-data$ find . -size +100k -printf "user: %u\t%f\t%k\t%h\n" user: zaunerj sample_960x540.mp4 1292 ./media/videos user: zaunerj bug-fixing-ways.jpg 132 ./media/bilder user: zaunerj 384-5184x3456.jpg 3280 ./media/picsum-photos user: zaunerj 1054-3079x1733.jpg 832 ./media/picsum-photos user: zaunerj 366-4000x3000.jpg 664 ./media/picsum-photos user: zaunerj 718-2274x1440.webp 228 ./media/picsum-photos user: zaunerj 1038-3914x5863.jpg 3264 ./media/picsum-photos user: zaunerj 1039-6945x4635.jpg 4432 ./media/picsum-photos user: zaunerj 423-5184x3456.jpg 1864 ./media/picsum-photos | |||
| find | . | -size +100k | -printf "Dateiname: [%f]\tUser: %u\tGröße: %kKB\n" |
Folgende Aufgabenstellung wurde angenommen: der Chef-Admin möchte eine "schöne" Liste aller
Dateien im example-data Verzeichnis die größer als 100KB sind. Er möchte die Dateigröße, den Dateinamen und den Besitzer sehen.
zaunerj@linux01:~/example-data$ find . -size +100k -printf "Dateiname: [%f]\tUser: %u\tGröße: %kKB\n" Dateiname: [sample_960x540.mp4] User: zaunerj Größe: 1292KB Dateiname: [bug-fixing-ways.jpg] User: zaunerj Größe: 132KB Dateiname: [384-5184x3456.jpg] User: zaunerj Größe: 3280KB Dateiname: [1054-3079x1733.jpg] User: zaunerj Größe: 832KB Dateiname: [366-4000x3000.jpg] User: zaunerj Größe: 664KB Dateiname: [718-2274x1440.webp] User: zaunerj Größe: 228KB Dateiname: [1038-3914x5863.jpg] User: zaunerj Größe: 3264KB Dateiname: [1039-6945x4635.jpg] User: zaunerj Größe: 4432KB Dateiname: [423-5184x3456.jpg] User: zaunerj Größe: 1864KB Passen Sie den Befehl so an, dass eine schöne Liste entsteht. Es sollte also der Dateiname als letztes stehen. | |||
| find | . | -name "*.jpg" | -printf "%Td.%Tm.%TY %TH:%TM\t%f\n" |
Ziel ist eine Liste mit gut lesbarem Modifikationsdatum und dem Dateinamen
find . -name "*.jpg" -printf "%Td.%Tm.%TY %TH:%TM\t%f\n" 17.03.2021 09:16 error404.jpg 17.03.2021 09:16 hose.jpg 17.03.2021 09:16 bug-fixing-ways.jpg 17.03.2021 09:16 linuxwars.jpg 17.03.2021 09:16 dev-vs-dr.jpg 17.03.2021 09:16 it-works.jpg 01.06.2021 07:23 384-5184x3456.jpg 01.06.2021 07:23 1054-3079x1733.jpg 01.06.2021 07:23 366-4000x3000.jpg | |||
Weitere umfangreiche Beispiele finden Sie hier.