PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bash- Zeitstempel in Dateiname integrieren



axelf
07-03-2008, 11:22
Hallo,



bash <62> ls -lG --sort=time --time=ctime --full-time tropical-island.jpg
-rw-rw-r-- 1 fle48132 273317 2007-07-03 08:31:43.055255000 +0200 tropical-island.jpg



Wie kann ich in der bash die Zeitstempelinformation mit in den Dateinamen einbauen ??



#!/bin/bash
set -x #debugmodus anschalten

FILE="`ls -lG --sort=time --time=ctime --full-time $1 | sed '-e s/^.\{33,33\}//'`"

echo $FILE
exit 0



Soweit bin ich selbst gekommen....
Damit bekomme ich dann :



bash <64> ./getstamp tropical-island.jpg
3. Jul 2007 tropical-island.jpg



Das ist aber leider noch weniger als ein Anfang :cool:

Da sich die Stelle des zeitstempels für andere User/Dateien unterscheiden müsste ich zuverlässig die Position des Zeitstempels im String finden und herausschneiden.
Wenn das passiert ist, ist der Rest glaub ich ein Kinderspiel....

Also wie finde ich im String zuverlässig den zeitstempel und schneide diesen aus ??
Ergebnis soll sein :


bash <64> ./getstamp tropical-island.jpg
03_07_2007-tropical-island.jpg

oder

2007-03-07-tropical-island.jpg





Danke für euere Hilfe !

Gruß
Axel

BLUESCREEN3D
07-03-2008, 12:36
Da sich die Stelle des zeitstempels für andere User/Dateien unterscheiden müsste ich zuverlässig die Position des Zeitstempels im String finden und herausschneiden.
Benutz statt ls einfach folgendes:

stat --format='%y' dateiname

axelf
07-03-2008, 13:11
Danke !!!

hier noch meine Lösung für alle die ähnliches suchen :



#!/bin/bash
#set -x #debugmodus anschalten

FILE="`stat --format='%y' $1 | cut -b 1-10`"

ausgabe="${FILE}_${1}"

#echo $FILE
#echo $ausgabe

rename="`mv $1 $ausgabe`"

exit 0


Gruß
Axel

BLUESCREEN3D
07-03-2008, 16:36
Kleine Verbesserung würde ich noch vorschlagen: Dateinamen in Anführungszeichen, damit du das auch auf Dateien, die Whitespaces enthalten, anwenden kannst:


#!/bin/bash
#set -x #debugmodus anschalten

FILE=`stat --format='%y' "$1" | cut -b 1-10`

ausgabe="${FILE}_${1}"

#echo $FILE
#echo $ausgabe

mv "$1" "$ausgabe" #das rename wurde nicht mehr gebraucht, oder?

exit 0

jan61
10-03-2008, 19:30
Moin,

noch ein kleiner Hinweis: Entweder dem mv noch die Option -i spendieren, oder so tun:
test -f "$ausgabe" || mv "$1" "$ausgabe"Damit verhinderst Du, dass Du aus Versehen bestehende Dateien zerschießt.

Jan