Dateien umbenennen und verschieben

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

joe knape

Benutzer
Registriert
09. Jan. 2015
Beiträge
16
Reaktionspunkte
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..
 
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.
 
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.
 
ok, verstanden.
aber kommen wir doch mal zu meinem eingangsproblem.. ggg
wie kann ich die ersten vier zeichen abschneiden?
 
Such mal im Netz nach "bash string manipulation". Da findest Du einen Haufen Tutorials.
 
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.
 
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:
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.
 
Du gibst aber früh auf :rolleyes: Jeder hat mal so angefangen.
 
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/ \;
 
Eben das geht mit -exec nicht, aber
Code:
...
  newfilename=${filename:4}
...
im Code von #8 ginge
 
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..
 
Status
Für weitere Antworten geschlossen.
 

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