[linux-l] Dateien finden, die genau am Tag YYYY-MM-DD veraendert wurden
Sven Guckes
maillist-belug at guckes.net
Mi Mai 9 16:49:36 CEST 2007
* Jan-Benedict Glaw <jbglaw at lug-owl.de> [2007-05-09 10:03]:
> On Wed, 2007-05-09 04:35:33 +0200, Sven Guckes <maillist-belug at guckes.net> wrote:
> > aufgabe:
> > auffinden und ausgabe aller dateien,
> > die am tag YYYY-MM-DD veraendert wurden. ..
> >
> > nur muss man dann den abstand zwischen heute und
> > des angegebenen datum YYYY-MM-DD selber berechnen,
> > damit man das geeignete N auch benutzen kann.
>
> Das ist mit GNU date ganz einfach,
> siehe die Beispiele in den anderen Mails.
eigentlich habe ich eine solche funktion schon seit jahren:
tage () { print $(( (`date +%s -d $2` - `date +%s -d $1` )/60/60/24 )) }
> Ach ja, nicht jeder Tag hat genau 86400 Sekunden. In gaaanz seltenen
> Fällen kommt mal eine Schaltsekunde dazu oder wird abgezogen.
"dieser fall sei dem geneigten leser als uebungsaufgabe ueberlassen." ;-)
> > $ ls -tl `find -daystart -maxdepth 1 -type f -mtime -3 ` | less
> >
> > wie beschraenkt man das ganze auf jene dateien,
> > die *nur* am drittletzten tag veraendert wurden?
>
> .. Du warst schon fast fertig, ohne den letzten Gedankenblitz zu
> haben. `find' iteriert durch alle Dateien/Verzeichnisse/... und
> testet der Reihe nach gegen die Einschränkungen, die Du mitgibst.
>
> Warum gibtst Du nicht einfach noch mit, daß die Datei _nicht_
> in den letzten zwei Tagen geändert worden sein darf?
>
> $ find . -maxdepth 1 -type f \
> \( -daystart -mtime -3 \) \
> -a \! \( -daystart -mtime -2 \)
ah - boolesche operatoren!
das hatte ich ganz uebersehen.
$ man find
/OPERATORS
mal das ganze zusammenbasteln...
(hab nur grad keine zeit..)
erstmal danke fuer den hinweis! :)
Sven
Mehr Informationen über die Mailingliste linux-l