GNU find hat keine Option „-older“ …

… aber eine Funktion „-newer“. Die Funktion „-newer“ ist praktisch, um absolute Zeitangaben zum Aufspüren von Dateien zu verwenden. So würde

touch -d "2010/1/1" /tmp/test.newer
find . -type f -a -name 'core.*' -a -newer /tmp/test.newer

alle regulären Dateien mit „core.“ als Anfang des Dateinamens finden, die neuer sind als der 1. Januar 2010, 00:00 Uhr.

Jedoch gibt es (komischerweise) keine Option „-older“, d.h. man kann scheinbar nicht im gleichen Aufruf auch rückwärts eingrenzen, d.h. Dateien aus einem bestimmten absoluten Zeit-Intervall suchen.

Durch kurze Überlegung wird jedoch klar, dass man keine Option „-older“ braucht, weil es ja einen Negations-Operator gibt, der aus „-newer“ („neuer als“) „\! -newer“ (also „nicht neuer als“) macht. Also:

touch -d "2010/1/1" /tmp/test.newer
touch -d "2010/12/31" /tmp/test.older
find . -type f -a -name 'core.*' -a -newer /tmp/test.newer -a \! -newer /tmp/test.older

Und so findet man alle als „core.*“ benannten regulären Dateien aus dem Jahr 2010, wobei genau genommen der Zeitpunkt (timestamp) 1. Januar 2010, 0 Uhr, 0 Minuten und 0 Sekunden fehlt. Will man 100% Abdeckung, muss man die Referenz-Datei für „-newer“ wie folgt anlegen:

touch -d "2009/12/31 23:59:59" /tmp/test.newer

oder

touch -d "2010/01/01 - 1 second" /tmp/test.newer

Done.

Imprint RSS