FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Ralph am 24 Dezember 2020, 14:32:29

Titel: [ geloest ] rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: Ralph am 24 Dezember 2020, 14:32:29
Moin allerseits,
ich möchte eine Datei mit FHEM-Methoden renamen unter Verwendung der Variablen %Y %m %d

Beispiel: täglich um 23:59 rename ./log/dateiname.log ./log/dateiname-%Y-%m-%d.log

(Es gibt Gründe, warum so und nicht gleich mit den Variablen anlegen, ich weiß, das wäre am einfachsten)

Mit {sytem ....} habe ich ja die Variablen nicht.

Hat bitte jemand eine Idee für mich ?
Titel: Antw:rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: Wernieman am 24 Dezember 2020, 14:37:25
Soeweit ich weiß, geht es nicht direkt mit FHEM. Aber als Stichwort, "perl ebene"
https://perldoc.perl.org/functions/rename (https://perldoc.perl.org/functions/rename)
https://perlmaven.com/how-to-remove-copy-or-rename-a-file-with-perl (https://perlmaven.com/how-to-remove-copy-or-rename-a-file-with-perl)

Beispielcode kann ich Dir jetzt nicht geben ....
Titel: Antw:rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: Wzut am 24 Dezember 2020, 14:58:40
zwei Zeilen bash Script > datum.sh

NAME="$(date --rfc-3339=date)"
cp test.txt test-$NAME.txt

mit chmod +x ausführbar machen
mit qx oder sytem aufrufen kopiert die Datei test.txt auf test-2020-12-24.txt
Titel: Antw:rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: Wernieman am 24 Dezember 2020, 22:58:25
Er möchte rename, also anstatt cp (copy) ein mv (move) nehmen ...
Titel: Antw:rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: TomLee am 25 Dezember 2020, 00:51:43
Habs bestimmt falsch verstanden und das mit dem bash-Script nicht ausprobiert.

Reicht nicht einfach ein :

{system("mv /log/dateiname.* /log/dateiname-$year-$month-$mday.log")}

?
Titel: Antw:rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: Ralph am 25 Dezember 2020, 12:38:23
Danke Euch allen und Frohes Fest.

Natürlich reicht auch TomLee's Idee, nur das Wissen um $year-$month-$mday fehlte mir. Wald und Bäume, wie ich immer sage.

Das mit dem bash ist mir vollkommen fremd, werde ich aber nach den feiertagen ausprobieren, interessiert mich.

Danke nochmals.
Titel: Antw:[ geloest ] rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: Otto123 am 25 Dezember 2020, 18:38:38
Hi,

zum🎄 Feiertag gibts Nachschlag, die Nonblocking Variante: ;) Shell Befehl in FHEM
"mv ./log/dateiname.log ./log/dateiname-$(date '+%Y-%m-%d').log"
https://fhem.de/commandref_DE.html#command

Schöne Weihnachten
Otto

P.S. TomLee's Variante hat einen kleinen Fehler ./log/... vs /log/...
Titel: Antw:[ geloest ] rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: TomLee am 25 Dezember 2020, 19:16:13
Und wie nutzt man das dann in einem AT ?

Weil

Zitat"mv ./log/dateiname.* ./log/dateiname-$(date '+%Y-%m-%d').log"

klappt nicht.
Titel: Antw:[ geloest ] rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: Otto123 am 25 Dezember 2020, 19:25:29
Die klassische Frage: was steht im Log?  8)

Mein Test - alles in der FHEM Kommandozeile!
{qx(ls -lha ./log/dateiname*.*)}
"touch ./log/dateiname.log"
define a5 at +00:00:10 "mv ./log/dateiname.* ./log/dateiname-$(date '+%Y-%m-%d').log"
10 sec warten
{qx(ls -lha ./log/dateiname*.*)}

Hat bei mir funktioniert - was der * da für einen Sinn macht steht auf einem anderen Blatt. ;)

Tipp: für wiederholende Tests besser %Y-%m-%d-%H-%M-%S verwenden ;)
Titel: Antw:[ geloest ] rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: TomLee am 25 Dezember 2020, 19:52:04
Ja, OK das klappt mit einer Datei im Ordner ./log/...

Ich teste aber mit einer Datei im fhem-Ordner und bin zu doof den Pfad richtig anzugeben  ::):

{qx(ls -lha ./yowsum*.*)}
{qx(ls -lha /yowsum*.*)}
{qx(ls -lha yowsum*.*)}


Klappt alles nicht.

pi@FHEMPIOS:/opt/fhem $ ls -l
insgesamt 1040
...
drwxr-xr-x  5 fhem dialout   4096 Jun 28  2019 yowsum-2020-12-25.logw
....
Titel: Antw:[ geloest ] rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: Otto123 am 25 Dezember 2020, 20:11:01
weil Deine Datei in Wahrheit ein Verzeichnis ist :)

Noch zu Deinen Variationen:
./yowsum ist die Datei im aktuellen Pfad (relativ angegeben) - mW wichtig um Dateien direkt zu starten die ausführbar sind (z.B. Scripte)
/yowsum ist die Datei in der Wurzel des Dateisystems (absolut angegeben)
yowsum wäre auch die Datei im aktuellen Pfad (relativ angegeben) - funktioniert um Dateien zu lesen und zu schreiben

~/ wäre das User HomeDir
Titel: Antw:[ geloest ] rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: TomLee am 25 Dezember 2020, 20:18:39
Alles gut. Danke.
Titel: Antw:[ geloest ] rename einer Datei (nicht: Device) in FHEM ?
Beitrag von: Wernieman am 28 Dezember 2020, 12:25:27
Und sei bitte vorsichtig mit *.
Das deklariert alles, übrigens inklusive dem ".". Deshalb ist auch "*.*" ein Dos/Windows Deklaration, die in Unix eigentlich nicht sinnvoll ist.