Script wird nicht richtig ausgeführt - Dateien verschieben

Status
Für weitere Antworten geschlossen.

tommytom79

Benutzer
Mitglied seit
09. Sep 2013
Beiträge
605
Punkte für Reaktionen
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
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.834
Punkte für Reaktionen
2.271
Punkte
829
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:

tommytom79

Benutzer
Mitglied seit
09. Sep 2013
Beiträge
605
Punkte für Reaktionen
13
Punkte
38
Danke sehr, ich werds mal probieren und dir Bescheid geben.

LG
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.834
Punkte für Reaktionen
2.271
Punkte
829
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.
 

tommytom79

Benutzer
Mitglied seit
09. Sep 2013
Beiträge
605
Punkte für Reaktionen
13
Punkte
38
ich habs einfach in meinem Aufgabenplaner integriert und er hat nur das Verzeichnis erstellt, ich muss zu Hause erst deinen neuen Befehl testen
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.834
Punkte für Reaktionen
2.271
Punkte
829
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.
 

tommytom79

Benutzer
Mitglied seit
09. Sep 2013
Beiträge
605
Punkte für Reaktionen
13
Punkte
38
und wie genau und wo soll ich "/usr/bin/find" einbinden? verstehe nicht ganz, was du meinst
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.834
Punkte für Reaktionen
2.271
Punkte
829
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.
 

tommytom79

Benutzer
Mitglied seit
09. Sep 2013
Beiträge
605
Punkte für Reaktionen
13
Punkte
38
ok, danke sehr
 

tommytom79

Benutzer
Mitglied seit
09. Sep 2013
Beiträge
605
Punkte für Reaktionen
13
Punkte
38
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