BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanneKontakt

Modifizierungsdatum zweier Dateien vergleichen

Soll zum Beispiel in einem Shellskript festgestellt werden, welche von zwei Dateien als letzte verändert wurde, so kann man dazu newer(1) verwenden. newer findet man in den FreeBSD-Ports unter misc/newer:

# cd /usr/ports/misc/newer && make install clean

An newer werden als Argumente die beiden Dateinamen übergeben. Ist das Modifizierungsdatum der zweiten Datei neuer als das der ersten, wird von newer der Rückgabewert 1 ausgegeben:

# touch datei1
# touch datei2
# newer datei1 datei2
# echo $?
1

Ist die erste Datei neuer, so wird als Rückgabewert 0 zurückgegeben:

# touch datei1
# newer datei1 datei2
# echo $?
0

Existiert die zweite Datei gar nicht, so wird eine 0 zurückgegeben:

# rm datei2 
# newer datei1 datei2
# echo $?
0

Existiert die erste Datei nicht, wird eine 1 zurückgegeben:

# mv datei1 datei2
# newer datei1 datei2
# echo $?
1
Comments (2)  Permalink

Comments

Hanspeter @ 04.06.2007 23:49 CEST
Warum so kompliziert, wenn das auch mit test geht? (zumindest auf MacOS X 10.4.9)

$ touch f1; sleep 2; touch f2
$ test f1 -nt f2; echo $?
1
$ test f1 -ot f2; echo $?
0

-nt True if file1 exists and is newer than file2.
-ot True if file1 exists and is older than file2.
Beat @ 05.06.2007 00:21 CEST

Hallo Hanspeter

Viele Dank für die Info. Wenn allerdings eine von beiden Dateien nicht existiert, gibt mir test in beiden Fällen immer eine 1 zurück. (Zumindest auf FreeBSD 6.2)

# touch f1
# test f1 -nt f2 ; echo $?
1
# test f2 -nt f1 ; echo $?
1
# test f1 -ot f2 ; echo $?
1
# test f2 -ot f1 ; echo $?
1

add a comment

The Trackback URL to this post is:
http://www.chruetertee.ch/blog/plugin=trackback(769).xml
Trackbacks are moderated.

This blog is gravatar enabled.
Your email adress will never be published.
Comment spam will be deleted!

Name*
E-Mail
For Spammers Only
URL
Comment*
Notify me via E-Mail when new comments are made to this entry
Remember me (needs cookies)