• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Dateien täglich sichern und umbenennen

bond007

Newbie
Moin,

ich weiss nicht ob ich im richtigen Bereich bin. Stelle aber einfach mal meine Frage. Sorry wenn falsch.

-Ich habe eine Datei (test.abc) die täglich in das Verzeichnis /input gelegt wird.

-Diese möchte ich erstmal in das Verzeichnis /bearbeiten kopieren

-dann möchte ich sie gerne in das Verzeichnis /fertig verschieben und gleichzeitig umbenennen in (test.xyz)

Das habe ich auch fast hinbekommen. Nur heisst diese Datei immer gleich. Wie kann ich also jeden Tag die Datei anders benennen? Z.B. das tägliche Datum mit ranhängen. (test_07012005.xyz)

Ich hoffe meine Frage ist verständlich.

Freu mich schon auf Antworten. Erstmal Danke und grüsse.
 

Hermann

Hacker
bond007 schrieb:
...dann möchte ich sie gerne in das Verzeichnis /fertig verschieben und gleichzeitig umbenennen in (test.xyz)...

Hallo bond007, hier mal eine Version mit "cp" (Copy):

cp /pfad/test.abc "/pfad/test"`date +'%d.%m.%y - %H:%M:%S'`".xyz"

"pfad" mußt Du noch an Deine Bedürfnisse anpassen, habe Deine Pfade nicht verstanden ;-).

*edit* folgende Zeichen:
`
'
"
die oben in der Zeile von cp sind nicht vergessen!

Gruß, Hermann
 
OP
B

bond007

Newbie
Moin, danke für die schnelle Hilfe.

Habe die Zeile so eingegeben:

cp /batchinput/*.edno /original`date +'%d.%m.%y - %H:%M:%S'`".org"


Bekomme aber leider die Ausgabe:

cp: copying multiple files, but last argument `07:55:56.org' is not a directory


Kannst du mir dazu nochmal Hilfestellung geben.

Danke und gruß
 

Hermann

Hacker
bond007 schrieb:
...
cp /batchinput/*.edno /original`date +'%d.%m.%y - %H:%M:%S'`".org"

Hallo bond007, es gilt nur für eine Datei. Sorry, ich hatte 2 " zuviel angegeben.

So sollte es aussehen:
cp /batchinput/datei.edno "/original`date +'%d.%m.%y - %H:%M:%S'`.org"

Wenn es mehrere Dateien sind mußt Du das mit einem Script machen, oder mal mit "man cp" nachschauen was cp so alles kann.

Du hast keinen Zielordner angegeben die Dateien landen auf / .
Muß es denn unbedingt als user root sein.

Gruß, Hermann
 
OP
B

bond007

Newbie
Moin, ich nochmal.

was ist denn hier falsch?? Verzweifel schon bei so einem Problem.*schäm*

mv batchinput/*.test original/`date +'%y%m%d - %H:%M:%S'`".org"

mv: Beim Verschieben mehrerer Dateien muß das letzte Argument ein Verzeichnis sein



????????????
 

Hermann

Hacker
bond007 schrieb:
...Verzweifel schon bei so einem Problem...

Hallo nochmal, schau mal hier:

http://www.linux-club.de/viewtopic.php?t=22626&highlight=png

da geht es um Bilder convertieren, Du kannst die da aufgeführten Scripte mit dem von Dir benötigten cp Befehl kombinieren. Habe zu jeder Zeile im Script eine bemerkung geschrieben.
Deine Ordner Struktur verstehe ich immer noch nicht, sollte es nicht etwa so aussehen:

Quelle: /home/user/pfad/quelle/datei
Ziel: /home/user/pfad/ziel/datei

Wenn Du genug Zeit hast und mir die genauen Daten gibst schreibe ich Dir ein kleines Script, kann aber 1-2 Tage dauern (wenig Zeit im Moment).

Gruß, Hermann
 

Hermann

Hacker
bond007 schrieb:
...Verzweifel schon bei so einem Problem...

Hallo bond007, schau Dir mal SelfLinux an ist sehr hilfreich um Scripte zu schreiben.

Und hier ein Script (habe es getestet, es funktioniert):

#!/bin/sh
#
# Dateien von /pfad_quelle nach /pfad_ziel mit'cp' kopieren und umbenennen.
# Dieses Script muß im Quellverzeichnis ausgeführt werden!
#
# Benutzte Variablen:
#
# quelle = Die Quelldatei
# i = Zähler für die Zieldateien
# ziel = Die Zieldatei
# pfad = der Pfad für die Zieldatei

# hier soll die Zieldatei hin
pfad="/home/user/ziel/"

# Zähler für die Zieldatei auf 0 setzen
i=0

# mit 'for' die Dateinamen in die Variable 'quelle' übernehmen.
for quelle in *.txt

# Anfang der 'for' Schleife.
do

# Zähler für die Zieldatei um 1 erhöhen
i=`expr $i + 1`

# wenn der Zähler kleiner als 10 ist eine 0 davor
if [ $i -lt 10 ]; then
i=0$i; else i=$i; fi

# Zielpfad und Dateiname mit Zähler, Datum und Uhrzeit im Dateinamen.
ziel="$pfad""datei-$i-vom-`date +'%d.%m.%y - %H:%M:%S'`.txt"

# Die Dateien von quelle nach ziel kopieren.
cp "$quelle" "$ziel"

# Ende der 'for' Schleife.
done

Gruß, Hermann
 
Oben