find mit verschiedenen Platzhaltern

Der find Befehl ist ein sehr mächtiges Werkzeug in der Bash, um etwa in Scripten mit Datei- oder Verzeichnisnamen zu arbeiten. Hier ist eine kleiner Ausschnitt der mir an der ein oder anderen Stelle weitergeholfen hat.
Eine kurze Erklärung zu den Wildcards. Ein Sternchen ist der Ersatz für viele beliebige Zeichen. Ein Fragezeichen hingegen ist der Ersatz für genau ein Zeichen.

In diesem Beispiel wird im aktuellen Verzeichnis nach der ersten part.rar Datei gesucht. Diese können in meinem Fall in folgenden Formaten vorliegen. *.part1.rar *.part01.rar *.part001.rar
Das /dev/null dient zur Unterdrückung der Fehlermeldung, wenn es z.B. keine *.part001.rar gibt.

find ./*.{[Pp][Aa][Rr][Tt]1.[Rr][Aa][Rr],[Pp][Aa][Rr][Tt]01.[Rr][Aa][Rr],[Pp][Aa][Rr][Tt]001.[Rr][Aa][Rr]} 2> /dev/null

Alle Dateien von /tmp, die 30 Tage (oder älter) sind, werden gelöscht.

find /tmp -atime +30 \! -type d -exec rm -f {} \;

Nützlich ist dieser Befehl z.B. in einem Wöchentlichen Cronjob, da er nur Files löscht, aber die Verzeichnisse erhalten bleiben. Manche Programme haben da ja so ihre Probleme.
Der Befehl wird jeden Montag um 1.00 Uhr ausgeführt, wenn er in /etc/crontab eingetragen ist.

01 01   * * 1   root    find /tmp -atime +30 \! -type d -exec rm -f {} \;

Alle Dateien die nach dem 30.07.2012 erstellt wurden, werden angezeigt. In meinem Fall sind es die Urlaubsfotos die ich finden wollte. Durch den -type Parameter werden nur Dateien angezeigt, Ordner werden ausgelassen.

find /mnt/Bilder/ -type f -newermt 12-07-30

1 Kommentar zu „find mit verschiedenen Platzhaltern“

  1. Nützliche Beitrag!
    Ein Hiweis: find hat die Option -iname. Dadurch wird gross/kleinschreibungsunabhängig gesucht. Das macht den find Befehl sehr viel einfacher und besser lesbar 😉

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht.