Script wird nicht richtig ausgeführt - Dateien 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.

tommytom79

Benutzer
Registriert
09. Sep. 2013
Beiträge
608
Reaktionspunkte
13
Punkte
38
Hallo!

Folgende Ausgangssituation:

Ich nehme über meinen DVB-C Stick (über DVBLink) Serien täglich auf. Leider kann dort nicht eingestellt werden, dass bestimmte Serien in bestimmte Unterordner abgelegt werden. Derzeit werden sie alle in "/volume1/video/TV-Aufnahmen" gespeichert. Ich nehme z.B. täglich "Micky Maus" auf. Die Datei, um die es geht, liegt im Ordner "TV-Aufnahmen" und heißt z.B.:
Micky_Maus-0740_20140411-16-11210000-1397194800.ts. Nun hat mir ein Arbeitskollege ein Script zusammen gebastelt, wo mir eine Datei Namens "Micky...." in einen Ordner "Micky" verschoben werden soll.
Der Ordner "Micky" wird zwar richtig im Unterordner "TV-Aufnahmen" angelegt, aber leider wird die Datei nicht verschoben.
So sieht mein Script derzeit aus:

#/bin/bash

# Hier steht die Zeichenkette, nach der im aktuellen Verzeichnis
gesucht wird
PATTERN="Micky"
# Hier steht der Pfad, in dem die ganze Action passiert, z.B.
/home/video/tv
MYPATH="/volume1/video/TV-Aufnahmen"

mkdir $MYPATH/$PATTERN 2> /dev/null;
# Sucht nach Dateien, die die Zeichenkette beinhalten, und verschiebt
sie in einen Unterordner, der genau wie die Zeichenkette heißt
find $MYPATH -name "*$PATTERN*" -type f -exec mv {} $MYPATH/$PATTERN 2>
/dev/null \;

Nachdem mein Arbeitskollege momentan keine Zeit hat und ich es schon dringend benötige, hoffe ich, dass mir jemand von euch helfen kann.


LG
Thomas
 
Probiere es einmal so:

Code:
find $MYPATH -name "*$PATTERN*" -type f -exec mv {} $MYPATH/$PATTERN \; 2> /dev/null

Und wenn das auch nicht will, dann ohne Ausgabeumleitung:

Code:
find $MYPATH -name "*$PATTERN*" -type f -exec mv {} $MYPATH/$PATTERN \;

Ansonsten vielleicht noch den Pfad vor das find-Kommando setzen, unter dem es sich befindet, falls die PATH-Variable nicht vernünftig gefüllt ist in der Laufzeitumgebung des Skripts - also z.B. /usr/bin/find
 
Zuletzt bearbeitet:
Danke sehr, ich werds mal probieren und dir Bescheid geben.

LG
 
Ich bin in der Shell-Programmierung leider ganz schön eingerostet. Vielleicht schreibt ja auch noch jemand, der fitter ist. Das sind einfach die Dinge, die ich jetzt machen würde. Ich gehe davon aus, dass Du die find-Zeile in der Shell testhalber erfolgreich ausführen konntest.
 
ich habs einfach in meinem Aufgabenplaner integriert und er hat nur das Verzeichnis erstellt, ich muss zu Hause erst deinen neuen Befehl testen
 
Verstehe. Dann als Tipps für die Zukunft: Teste in einem solchen Fall die problematischen Zeilen so lange auf der Shell, bis sie funktioniert. Und schreibe überall Pfade davor. Du weißt einfach nicht, was in der Laufzeitumgebung Aufgabenplanungs-Shell in den Environmentvariablen wie PATH drinsteht. Deshalb solltest Du davon ausgehen, dass nichts drinsteht und Du dementsprechend alles im Skript komplett ausformulieren musst. Bei den Datenpfaden hast Du das ja auch schon sehr gut gemacht.
 
und wie genau und wo soll ich "/usr/bin/find" einbinden? verstehe nicht ganz, was du meinst
 
Du schreibst einfach statt "find" "/usr/bin/find" in Deinem Skript. Bitte schau aber erstmal auf der Konsole, wie der richtige Pfad ist. Ich kanns jetzt nicht überprüfen.
 
ok, danke sehr
 
der Code:
find $MYPATH -name "*$PATTERN*" -type f -exec mv {} $MYPATH/$PATTERN \; 2> /dev/null
hat funktioniert, 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