Hinweis: Dieser Artikel wurde urspruenglich 2013 veroeffentlicht. Einige Schritte, Befehle oder Softwareversionen haben sich moeglicherweise geaendert. Pruefen Sie die aktuelle Man Pages-Dokumentation fuer die neuesten Informationen.
In dieser Schritt-fuer-Schritt-Anleitung lernen Sie, wie Sie in Ubuntu Dateien mit komplexen Kriterien finden (oder auch ohne).
Anleitung: Dateien in Ubuntu mit komplexen Kriterien finden (oder auch nicht)
Manchmal muessen Sie eine Datei finden und kennen nur die Erweiterung oder den Anfang des Dateinamens. Eine leistungsstarke, flexible Suche, die in allen Unterverzeichnissen nach Dateien sucht, die einem Kriterium entsprechen, ist wichtig. Ubuntu verfuegt ueber einen solchen Befehl, mit dem Sie entweder nach einem exakten Dateinamen suchen oder einen Platzhalter verwenden koennen, um ein Kriterium anzugeben. Wir werden nur die Grundlagen abdecken, aber wissen Sie, dass der find-Befehl weitere Optionen bietet, um konkretere Kriterien anzugeben.
Windows-Benutzer werden feststellen, dass der find-Befehl dem dir-Befehl am aehnlichsten ist (den ich staendig versuche zu verwenden, obwohl ich hier keinen Windows Server betreibe… lol).
Hier ist die Syntax: find
find / -type f -iname "MeinDateiName.Ext" wird verwendet, wenn Sie den genauen Namen kennen. Ersetzen Sie MeinDateiName.Ext durch Ihren Dateinamen.
find / -type f -iname "MeinDateiNa*" wenn Sie mit einem Platzhalterzeichen mehr Dateien finden moechten.
Lassen Sie die -type-Option weg, wenn Sie auch nach Verzeichnissen etc. suchen moechten.
Hier sind einige Beispiele, die Ihnen helfen, find in gaengigen Szenarien zu verwenden:
Grundlegende Szenarien:
I. Alle Zip-Dateien in einem Verzeichnis finden
find /home -name '*.zip'
II. Alle MP3- und AAC-Dateien in einem Verzeichnis finden
find /home/MeineMusik -name '*.mp3' -o -name '*.aac'
III. Alle MP3- und AAC-Dateien mit Gross-/Kleinschreibung-unabhaengiger Suche finden
find /home/MeineMusik -iname '*.Mp3' -o -iname '*.aAc'
Kombinierte Kriterien-Szenarien:
IV. Alle Filme finden, die mehr als 500 MB Speicherplatz belegen
find /home/ -iname '*.avi' -o -iname '*.mpeg' -a -size +500M
V. Alle grossen Backups finden, die in den letzten 2 Wochen erstellt wurden
find /home/ -iname '*.zip' -o -iname '*.bak' -a -size +300M -mtime -14
Ausgabe an eine Aktion weiterleiten
In den folgenden Beispielen beachten Sie bitte Folgendes:
- ’{}’ steht fuer die gefundene Datei
- ’ ;’ beendet die exec-Anweisung. Beachten Sie den Leerraum vor dem Schraegstrich.
VI. Alle Verzeichnisse finden und deren Berechtigungen auf 755 setzen
find /usr/share/MeineWPSeite/ -type d -exec chmod 755 {} \;
VII. Alle Dateien finden und deren Berechtigung auf 644 setzen
find /usr/share/MeineWPSeite/ -type f -exec chmod 644 {} \;
VIII. Alle grossen (ueber 300 MB) Backup-Dateien aelter als 14 Tage finden und in einen neuen Ordner verschieben
find /home/ -iname '*.zip' -o -iname '*.bak' -a -size +300M -mtime +14 -exec mv '{}' /mein/archiv/backups/ \;
Hier ist eine Kopie der man-Seite fuer find:
FIND(1) FIND(1)
NAME
find - Dateien in einer Verzeichnishierarchie suchen
SYNOPSIS
find
BESCHREIBUNG
Diese Handbuchseite dokumentiert die GNU-Version von find. GNU find durchsucht
den Verzeichnisbaum, der bei jedem angegebenen Dateinamen beginnt, indem der
gegebene Ausdruck von links nach rechts ausgewertet wird, gemaess den Vorrangregeln
(siehe Abschnitt OPERATOREN), bis das Ergebnis bekannt ist.
Wenn Sie find in einer Umgebung verwenden, in der Sicherheit wichtig ist,
sollten Sie das Kapitel "Security Considerations" der findutils-Dokumentation lesen.
OPTIONEN
Die Optionen '-H', '-L' und '-P' steuern die Behandlung von symbolischen Links.
-P Symbolischen Links niemals folgen. Dies ist das Standardverhalten.
-L Symbolischen Links folgen.
-H Symbolischen Links nicht folgen, ausser bei Kommandozeilenargumenten.
AUSDRUECKE
Der Ausdruck besteht aus Optionen (die den Gesamtbetrieb beeinflussen),
Tests (die einen wahren oder falschen Wert zurueckgeben) und Aktionen (die
Nebeneffekte haben), alle getrennt durch Operatoren.
**OPTIONEN**
-daystart
Zeiten ab Tagesbeginn messen statt ab 24 Stunden.
-depth Verzeichnisinhalte vor dem Verzeichnis selbst verarbeiten.
-maxdepth levels
Hoechstens levels Ebenen unter den Kommandozeilenargumenten absteigen.
-mindepth levels
Keine Tests oder Aktionen auf Ebenen unter levels anwenden.
**TESTS**
-amin n
Datei wurde vor n Minuten zuletzt zugegriffen.
-atime n
Datei wurde vor n*24 Stunden zuletzt zugegriffen.
-cmin n
Dateistatus wurde vor n Minuten zuletzt geaendert.
-empty Datei ist leer und ist entweder eine regulaere Datei oder ein Verzeichnis.
-iname pattern
Wie -name, aber Gross-/Kleinschreibung wird nicht beachtet.
-name pattern
Dateiname (Pfad ohne fuehrende Verzeichnisse) stimmt mit Shell-Muster ueberein.
-newer file
Datei wurde kuerzlich geaendert als file.
-size n
Datei verwendet n Einheiten an Speicherplatz.
-type c
Datei ist vom Typ c: b (Block), c (Zeichen), d (Verzeichnis), f (regulaere Datei), l (symbolischer Link), p (Named Pipe), s (Socket).
**AKTIONEN**
-delete
Dateien loeschen; wahr wenn Loeschung erfolgreich war.
-exec command ;
Befehl ausfuehren; wahr wenn Status 0 zurueckgegeben wird.
-print Vollstaendigen Dateinamen auf Standardausgabe ausgeben.
-printf format
Format auf Standardausgabe ausgeben.
**OPERATOREN**
( expr )
Vorrang erzwingen.
! expr Wahr wenn expr falsch ist.
expr1 -a expr2
Und-Verknuepfung.
expr1 -o expr2
Oder-Verknuepfung.
BEISPIELE
find /tmp -name core -type f -print | xargs /bin/rm -f
Findet Dateien namens core im oder unter dem Verzeichnis /tmp und loescht sie.
find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
Findet Dateien namens core und loescht sie, wobei Dateinamen mit Sonderzeichen korrekt behandelt werden.
find . -type f -exec file '{}' \;
Fuehrt 'file' auf jeder Datei im oder unter dem aktuellen Verzeichnis aus.
find $HOME -mtime 0
Sucht nach Dateien in Ihrem Heimatverzeichnis, die in den letzten 24 Stunden geaendert wurden.
EXIT-STATUS
find beendet sich mit Status 0 wenn alle Dateien erfolgreich verarbeitet wurden,
groesser als 0 wenn Fehler auftreten.
SIEHE AUCH
locate(1), locatedb(5), updatedb(1), xargs(1), chmod(1), fnmatch(3),
regex(7), stat(2), lstat(2), ls(1), printf(3), strftime(3), ctime(3),
Finding Files (online in Info oder gedruckt).
Zusammenfassung
Sie haben erfolgreich gelernt, wie Sie in Ubuntu Dateien mit komplexen Kriterien finden (oder auch ohne). Wenn Sie auf Probleme stossen, ueberpruefen Sie die Voraussetzungen und stellen Sie sicher, dass Ihre Man Pages-Umgebung richtig konfiguriert ist.