BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

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 21:49 UTC
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 @ 04.06.2007 22:21 UTC

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
No new comments allowed (anymore) on this post.