Hallo, ich wollte heute Dateien suchen, die an einem best. Tag in der Vergangenheit geändert wurden. Bin dabei logischerweise mit find und mtime, etwas später auch mit daystart konfrontiert worden. Ich verstehe das ganze wie folgt: man find sagt u.a. : "When find figures out how many 24-hour periods ago the file was last accessed, any fractional part is ignored, so to match -atime +1, a file has to have been accessed at least two days ago." ---------------------------------------------------------------------------------- Beispiel: pc53082:~ # date Fri Aug 27 18:50:17 CEST 2010 pc53082:~ # stat test File: `test' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 822h/2082d Inode: 11688199 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2010-08-27 17:40:43.000000000 +0200 Modify: 2010-08-26 17:50:00.000000000 +0200 Change: 2010-08-27 17:48:56.000000000 +0200 pc53082:~ # find . -type f -mtime 0 -exec ls -la {} \; -rw------- 1 root root 53 Aug 27 14:20 ./.Xauthority -rw------- 1 root root 47 Aug 27 18:46 ./.lesshst test ist am 26.8. um 17:50 modifiziert worden. D.h. die Datei test ist 1,irgendwas * 24h alt. Deswegen wird sie mit "mtime 0" nicht gefunden, logischwerseise mit "mtime 1": pc53082:~ # find . -type f -mtime 1 -exec ls -la {} \;|grep test -rw-r--r-- 1 root root 0 Aug 26 17:50 ./test pc53082:~ # find . -type f -mtime +1 -exec ls -la {} \;|grep -w test -rwxr--r-- 1 root root 150 Sep 1 2009 ./skripte/test.sh -rwxr-xr-x 1 root root 17 Jun 10 14:21 ./linux_shell_kurs/test.sh -rw-r--r-- 1 root root 93 Jan 10 2010 ./test.gz Wie gesagt, die Datei ist 1,xxx * 24h alt. Da lt. man xxx abgeschnitten wird, bleibt 1 übrig, womit die Bedingung +1 nicht mehr erfüllt wird. So weit so gut. ----------------------------------------------------------------------------------- So nach Dateien zu suchen, die z.b. gestern oder an einem best. Tag in der Vergangenheit geändert wurden, ist schwierig. Neues Beispiel: pc53082:~ # date Fri Aug 27 19:01:36 CEST 2010 pc53082:~ # touch -m -t 1008261904 test pc53082:~ # stat test File: `test' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 822h/2082d Inode: 11688199 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2010-08-27 17:40:43.000000000 +0200 Modify: 2010-08-26 19:04:00.000000000 +0200 Change: 2010-08-27 19:01:53.000000000 +0200 pc53082:~ # find . -type f -mtime 0 -exec ls -la {} \;|grep -w test -rw-r--r-- 1 root root 0 Aug 26 19:04 ./test pc53082:~ # date Fri Aug 27 19:06:02 CEST 2010 pc53082:~ # find . -type f -mtime 0 -exec ls -la {} \;|grep -w test pc53082:~ # pc53082:~ # find . -type f -mtime 1 -exec ls -la {} \;|grep -w test -rw-r--r-- 1 root root 0 Aug 26 19:04 ./test pc53082:~ # Die Datei ist im zweiten Beispiel in beiden Fällen zwar gestern geändert worden, wird aber nur einmal gefunden ! -------------------------------------------------------------------------------------------- Da stolpere ich in der manpage über -daystart und denke, das ist die Lösung meines Problems: "-daystart Measure times (for -amin, -atime, -cmin, -ctime, -mmin, and -mtime) from the beginning of today rather than from 24 hours ago. This option only affects tests which appear later on the command line." Mißt von "beginning of today", sprich, auf heute bezogen, von 27.8.2010 00:00. Da meine Datei am 26.8. um 19:04 geändert wurde, ist sie, beginnend von 27.8. 00:00, 0,xxx * 24h alt. Somit müsste sie mit folgender Zeile zu finden sein: pc53082:~ # date Fri Aug 27 19:18:36 CEST 2010 pc53082:~ # find . -type f -daystart -mtime 0 -exec ls -la {} \;|grep -w test pc53082:~ Wird sie aber nicht, seltsam. Folgende Zeile sollte die Datei _nicht_ finden: pc53082:~ # find . -type f -daystart -mtime 1 -exec ls -la {} \;|grep -w test -rw-r--r-- 1 root root 0 Aug 26 19:04 ./test pc53082:~ # Tut sie aber, seltsam. Die Datei ist, vom Standpunkt 27.8. 00:00, 0,xxx * 24h alt. Das ",xxx" wird abgeschnitten, damit bleibt 0 übrig. 0 ist nicht gleich 1, aber die Datei wird gefunden. Auch diese Zeile sollte die Datei _nicht_ finden: pc53082:~ # find . -type f -daystart -mtime +0 -exec ls -la {} \;|grep -w test -rw-r--r-- 1 root root 0 Aug 26 19:04 ./test Da die Datei 0,xxx * 24h alt ist und ,xxx abgeschnitten wird, ist die Bedingung "+0" nicht erfüllt. Die Datei wird aber gefunden. Wo ist mein Denkfehler ? Bernd -- Bernd Lentes Systemadministration Institut für Entwicklungsgenetik HelmholtzZentrum münchen bernd.lentes@helmholtz-muenchen.de phone: +49 89 3187 1241 fax: +49 89 3187 3826 http://www.helmholtz-muenchen.de/idg Aufsichtsratsvorsitzende: MinDir'in Bärbel Brumme-Bothe Geschäftsführer: Prof. Dr. Günther Wess und Dr. Nikolaus Blum Registergericht: Amtsgericht München HRB 6466 Zeit ist keine Schnellstrasse zwischen Wiege und Grab, sondern Platz zum Parken in der Sonne -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org