Dateien umbenennen und verschieben

joe knape

Benutzer
Mitglied seit
09. Jan 2015
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
hallo freunde.. ich brauche mal eure hilfe..
ich kopiere mit einem tool namens Photosync (handyapp) alle möglichen aufgenommenen bilder und videos auf meine ds214play
in ein verzeichnis /photo/_upload.
kann man nun dieses ganze wirrwar sortieren, umbenennen und verschieben mit einem befehl im aufgabenplaner?

ich habe folgende dateien:

FB_IMG_12345*.jpg (Facebookbilder)
FB_*.mp4 (aufgenommene facebookvideos)
2020*.jpg (mit dem handy aufgenommene fotos)
2020*.mp4 (mit dem Handy aufgenommene Videos)
IMG-2020*.jpg (über whatsapp zugesendete Fotos)
VID-2020*.mp4 (über whatsapp zugesendete videos)

erreichen möchte ich folgendes:

alle fotos sollen in passende verzeichnisse verschoben werden:
FB_IMG_12345*.jpg ins verzeichnis /photo/facebook
2020*.jpg sollen ins Verzeichnis /photo/_neu_hochladen
IMG-2020*.jpg soll umbenannt werden, IMG- abschneiden und dann ins verzeichnis /photo/_neu_hochgeladen verschieben

alle videos
FB_*.mp4 ins verzeichnis /video/facebookvideos
2020*.mp4 ins verzeichnis /videos/_neu_hochgeladen
VID-2020*.mp4 soll umbenannt werden, VID- abschneiden und ann ins verzeichnis /video/_neu_hochgeladen verschieben

frage: geht sowas überhaupt?
wie bewerkstellige ich sowas? im aufgabenplaner kann man doch nur eine befehlszeile eingeben..
bisher hab ich mehrere aufgaben erstellt:

Facebookfotos: find /volume1/photo/_upload/ -type f -name '*FB_*.jpg' -exec mv -i {} /volume1/photo/facebook/ \;
Handyfotos: find /volume1/photo/_upload/ -type f -name '20*.jpg' -exec mv -i {} /volume1/photo/_Neu_hochgeladen/ \;
normale Fotos: find /volume1/photo/_upload/ -type f -name '*.jpg' -exec mv -i {} /volume1/photo/_Neu_hochgeladen/ \;

Videos: find /volume1/photo/_upload/ -type f -name '*.mp4' -exec mv -i {} /volume1/video/_Neu_hochgeladen/ \;

hierfür habe ich 4 Aufgaben im Aufgabenplaner erstellt, aber das ist doch recht "unkomfortabel"... und ich habe keinen plan, wie man gleichzeitig die ersten vier zeichen abschneiden kann und danach diese datei verschiebt..

wenn mir hier jemand auf die sprünge helfen kann, wäre ich echt dankbar..
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
Im Aufgabenplaner kannst du mehrzeilige Scripte hinterlegen.

DSM => Systemsteuerung => Aufgabenplaner => Erstellen => Geplante Aufgabe => Benutzerdefiniertes Script => Reiter "Aufgabenstellung"

Ich bin dazu übergegangen meine Scripte auf das Volume zu legen und im Aufgabenplaner nur das Script selber aufzurufen (bash /volume1/ordner/script1.sh). So kann ich meine Scripte besser und einfacher sichern.
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
Ja, wenn du Scripte auf dem Volume ablegst, dann als einfache Textdatei.
Je Befehl eine Zeile.
Wenn du im Script Bereiche kommentieren willst, setze an den Anfang deiner Zeile ein Gitter (#). Diese Zeilen werden dann bei der Ausführung ignoriert.
Code:
# Mein Script

echo "Meine erste Zeile"

# Hier kommt nun die zweite Zeile
echo "Meine zweite Zeile"

# Erklärung warum man kommentiert
echo "Das Kommentieren hilft bei größeren Scripten den Überblick zu behalten"

Wenn du es richtig machen willst, benennst du die Textdatei von script.txt in script.sh um. Aber im Grunde frisst der Aufruf auch jede andere Dateiendung.
 

joe knape

Benutzer
Mitglied seit
09. Jan 2015
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
ok, verstanden.
aber kommen wir doch mal zu meinem eingangsproblem.. ggg
wie kann ich die ersten vier zeichen abschneiden?
 

Der Paul

Benutzer
Mitglied seit
04. Feb 2014
Beiträge
131
Punkte für Reaktionen
26
Punkte
28
Such mal im Netz nach "bash string manipulation". Da findest Du einen Haufen Tutorials.
 

joe knape

Benutzer
Mitglied seit
09. Jan 2015
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
ich habe schon stundenlang herumgesucht. alle möglichen tutorials, richtig. aber kein beispiel, wie ich mein problem in so einer schleife lösen kann. deshalb habe ich ja hier um hilfe gebeten.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.059
Punkte für Reaktionen
3.872
Punkte
488
Das geht jedem so. Probier es mal ohne -exec, sondern so in der Art:

Code:
for file in $(find ....)
do
   filename=$(basename $file)
   newfilename= stringoperation($filename)
   mv $file  /volume1/photo/_Neu_hochgeladen/$newfilename
done
 
Zuletzt bearbeitet:

joe knape

Benutzer
Mitglied seit
09. Jan 2015
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
ich gebs auf. vielleicht muss ich mir doch einen auskenner holen, der geld dafür nimmt. ich habe nicht die kenntnisse und auch nicht die zeit, stunden- und tagelang nach einer lösung zu suchen. schade.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.059
Punkte für Reaktionen
3.872
Punkte
488
Du gibst aber früh auf :rolleyes: Jeder hat mal so angefangen.
 

joe knape

Benutzer
Mitglied seit
09. Jan 2015
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
wie kann ich diese zeile so umbauen, daß vom dateinamen die ersten vier zeichen abgeschnitten werden?
find /volume1/photo/_upload/ -type f -name '*.mp4' -exec mv -i {} /volume1/video/_Neu_hochgeladen/ \;
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.059
Punkte für Reaktionen
3.872
Punkte
488
Eben das geht mit -exec nicht, aber
Code:
...
  newfilename=${filename:4}
...
im Code von #8 ginge
 

joe knape

Benutzer
Mitglied seit
09. Jan 2015
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
ja, dieses tool erledigt das, was ich gerne möchte. hat eben nur den nachteil, daß man es eben manuell machen muss, und es nicht automatisch nach dem upload auf das NAS läuft..
aber ich werde mich wohl damit abfinden müssen.

trotzdem danke..
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat