[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