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.

Verwandte Artikel