Gast
#1261864
Ich möchte Quell- und Zieldatei vergleichen. Wenn die Quelldatei neuer ist, als die Zieldatei, soll ein Befehl ausgeführt werden. Wie bekommt man die Zeit einer Datei? Wie vergleicht man zwei Zeiten?
|
Anzeige
|
Shell: Alter von Quell- und Zieldatei vergleichen
Gast
#1261864
Ich möchte Quell- und Zieldatei vergleichen. Wenn die Quelldatei neuer ist, als die Zieldatei, soll ein Befehl ausgeführt werden. Wie bekommt man die Zeit einer Datei? Wie vergleicht man zwei Zeiten? Direkt die Modification-timestamps vergleichen geht mit "-nt" ("newer
than")
also
Auslesen der Daten zum weiterverrechnen in der shell geht z.B. mit "stat".
"man stat" für Details.
Gast
#1261876
Manpage: man test Emil schrieb: > Ich möchte Quell- und Zieldatei vergleichen. Wenn die Quelldatei neuer > ist, als die Zieldatei, soll ein Befehl ausgeführt werden. > Wie bekommt man die Zeit einer Datei? ls -al FILENAME| awk '{print $6" " $7}' > Wie vergleicht man zwei Zeiten? Datum jeweils in Unixtime umrechnen und subtrahieren: date +%s -d "`ls FILENAME | awk '{print $6" " $7}'`" olibert schrieb:
> Manpage: man test
Oder so, ja :-)
Als Shellscript speichern und beim Aufruf die beiden Dateinamen
uebergeben:
#!/bin/bash
if [ $1 -nt $2 ];
then
Befehl
fi
Olli R. schrieb: >> Wie bekommt man die Zeit einer Datei? > > ls -al FILENAME| awk '{print $6" " $7}' > >> Wie vergleicht man zwei Zeiten? > > Datum jeweils in Unixtime umrechnen und subtrahieren: > > date +%s -d "`ls FILENAME | awk '{print $6" " $7}'`" Wie immer unter Unix: Viele Wege führen zum Ziel. Dein Weg hängt aber vom Ausgabeformat von ls ab. Für ein lokales Skript in Ordnung, nur portabel isses halt nicht wirklich. Ernst B✶ schrieb:
> Wie immer unter Unix: Viele Wege führen zum Ziel.
Ja. Mir war nur gerade entfallen, dass es dafuer ja einen test gibt :-)
Also, hier nochmal die Loesung als fertiges Script:
#!/bin/bash
if [ $1 -nt $2 ];
then
Befehl
fi
Gast
#1262050
Hey, toll & Danke! Werde mal systematisch was zum Shell-Scripting lesen. Wenn man nicht immer nachschlagen muss, kann das wohl sehr produktiv sein. Emil schrieb: > Hey, toll & Danke! > Werde mal systematisch was zum Shell-Scripting lesen. > Wenn man nicht immer nachschlagen muss, kann das wohl sehr produktiv > sein. http://tldp.org/LDP/abs/html/
Gast
#1262514
mit bash geht es auch so: if [[ quelle -nt ziel || ! -f ziel ]] then "create ziel from quelle" else echo "nothing to do" fi evtl. kann man die bedingungen noch tauschen, spart dann vielleicht etwas rechenzeit. allerdings kostet mich das nachschlagen ein milliardenfaches.. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|