erik72
Goto Top

Mtime einer Datei in Variable

Hallo,
ich möchte in einer unix-sh einen Dateinamen in einen Dateinamen.Erstellungsdatum(mtime) umbenennen.
Frage: Wie könnte ich das Erstellungsdatum einer Datei in eine Variable packen? Diese könnte ich dann auslesen und im mv-Befehl einfügen.
Danke für Eure Lösungsansätze...schöne Grüße
Erik

Content-Key: 235467

Url: https://administrator.de/contentid/235467

Printed on: April 24, 2024 at 03:04 o'clock

Member: colinardo
colinardo Apr 14, 2014 updated at 10:18:44 (UTC)
Goto Top
Hi Erik,
Frage: Wie könnte ich das Erstellungsdatum einer Datei in eine Variable packen?
z.B. so
file="deineDatei.txt"  
filename=${file%.*}
extension=${file##*.}
datum=$(date -r "$file" +%F_%T)  
mv "$file" "$filename.$datum.$extension"  
Grüße Uwe
Member: Erik72
Erik72 Apr 14, 2014 at 11:30:12 (UTC)
Goto Top
Hallo Uwe,
lieben Dank für Deine Mühe. Meine sh kennt die option -r bei date leider nicht.

date: illegal option -- r
Usage: date [-u] [+format]
date [-u] [mmddhhmm[[cc]yy]]
date [-a [-]sss.fff]


Hätte noch jemand eine Idee, das Erstellungsdatum in eine Variable zu packen?

Grüße
Erik
Member: colinardo
colinardo Apr 14, 2014 updated at 11:37:26 (UTC)
Goto Top
dann probiers halt mal damit
datum=$(stat -c %y test.txt | cut -d '.' -f1)
Member: Erik72
Erik72 Apr 14, 2014 at 11:41:50 (UTC)
Goto Top
hmmmm, er will nicht....

$ ./move_in_mtime
./move_in_mtime[6]: stat: not found
Member: colinardo
colinardo Apr 14, 2014 updated at 11:57:17 (UTC)
Goto Top
auf was für einem System arbeitest du denn überhaupt ? scheint doch ziemlich abgespeckt zu sein....

dann habe ich hier noch was für dich:
find /pfad/zur/datei -name deineDatei.txt -printf '%TY-%Tm-%Td_%TX'
Member: Erik72
Erik72 Apr 14, 2014 at 12:10:52 (UTC)
Goto Top
Das ist ein HP-UX B.11.31 und das Skript muss unter ksh laufen

Schade, deine letzte Idee will auch nicht.....

find: bad option -printf
Member: colinardo
colinardo Apr 14, 2014 updated at 12:28:30 (UTC)
Goto Top
Die Systeme kenne ich nicht, dann versuch es über die Ausgabe von ls. Jetzt haben wir langsam alles durch...
 ls -l deineDatei.txt | awk '{print $6"_"$7}'
Member: Erik72
Erik72 Apr 14, 2014 at 13:29:20 (UTC)
Goto Top
Funktioniert! Danke! Es gibt nur ein kleines Problemchen. Dateien älter als ein Jahr werden mittels ls -l ohne Uhrzeit gelistet und somit beim move überschrieben.

430 Mar 16 2007 /pfad1/testfile
763 Mar 16 2007 /pfad2/testfile
834 Mar 16 2007 /pfad3/testfile

sobald ich diese files in /ziel/testfile.zeitstempel verschiebe, ist nur die letzte datei vorhanden, da Zeitstempel gleich.


bei files aus diesem jahr funktioniert es gut:

270 Apr 14 14:59 /pfad1/testfile
233 Apr 14 15:04 /pfad1/testfile
210 Apr 14 15:15 /pfad1/testfile
Member: colinardo
colinardo Apr 14, 2014 updated at 14:29:08 (UTC)
Goto Top
OK in dem Fall nehme mal das:
ls -l --time-style='+%Y-%m-%d_%H:%M:%S' deineDatei.txt | awk '{print $6}'
hoffentlich kennt deine Kiste diesen Parameter wenigstens ...sonst nehm ne 9mm und blas ihn in die ewigen Jagdgründe face-wink