cp: No such file or directory

  • 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.

ringebu82

Benutzer
Registriert
17. Feb. 2014
Beiträge
4
Reaktionspunkte
0
Punkte
0
Liebe Mitmenschen,

ich habe folgendes Problem: Ich bin auf meiner DS713+ via SSH angemeldet und möchte mit einem Skript alle JPGs eines Ordner (und evtl. Unterordner) in ein Zielverzeichnis kopieren.
Dafür benutze ich folgenden Code:

Rich (BBCode):
for currentFiles in $(find "/volume1/Temp" -type f -name *.JPG)
do cp $currentFiles "/volume1/photo/2014"
done

Leider gibt mir die Konsole die Rückmeldung:

Rich (BBCode):
': No such file or directoryp/test/CIMG7022.JPG

..wobei die genannte Datei eine der Dateien ist, die sich im Quellverzeichnis in einem Unterordner befinden.

Das merkwürdige ist, dass der Befehl ausgeführt wird, sobald ich die drei Zeilen Code direkt in die Kommandozeile kopiere und ausführe.
Die Fehlermeldung erhalte ich nur beim Ausführen des Codes über das Shellscript. Da ich diesen Vorgang automatisieren möchte, muss ich zwingend über die Skriptdatei gehen...

Ich wäre sehr dankbar für ein paar Anregungen, woran es liegen könnte.

Vielen Dank vorab!
René Krause
 
Hallo René und willkommen im Forum,

was mir auf die Schnelle jedenfalls auffällt ist das wenn Du Platzhalter verwendest, dann müssen diese in Anführungzeichen gestellt werden. Also "*.JPG"

Gruß Frank
 
Mir sieht's eher nach Leerzeichen in den Verzeichnisnamen aus.
Die führen in einer For-Schleife dazu, dass die Shell sie für unterschiedliche Parameter hält.....

Alternativen:

find /volume1/Temp -type f -name '*.JPG' | while read dateiname
do
cp "$dateiname" /volume1/photo/2014
done

oder

find /volume1/Temp -type f -name '*.JPG' -exec cp {} /volume1/photo/2014 \;
 
Vielen Dank, denn...
find /volume1/Temp -type f -name '*.JPG' -exec cp {} /volume1/photo/2014 \;
...hat jetzt funktioniert.

Jetzt stehe ich aber vor dem Problem, dass ich mehrere verschiedene Dateitypen nacheinander kopieren muss.
So habe ich eine zweite Zeile hinzugefügt, das Skript sieht jetzt so aus:

Rich (BBCode):
find /volume1/Temp -type f -name '*.JPG' -exec cp {} "/volume1/photo/2014/02 Februar 2014" \;
find /volume1/Temp -type f -name '*.ARW' -exec cp {} "/volume1/photo_raw/[RAW]/2014" \;
find /volume1/Temp -type f -name '*.MTS' -exec cp {} "/volume1/privatvideo/2014" \;

Ausführen lässt es sich via Shell, aber es wird immer nur der letzte Befehl ausgeführt, also in diesem Fall das Kopieren der MTS-Videos.
Dafür bekomme ich folgende Fehlermeldung:

Rich (BBCode):
find: -exec CMD must end by ';'

Also soweit ich das sehe, habe ich das getan, aber vermutlich hakt es da an der Syntax bei Aufruf mehrerer solcher Zeilen in einem Skript.

Bin für weitere Anregungen dankbar...

LG
René
 
Es liegt vermutlich an den Sonderzeichen.
Im ersten Aufruf sind Leerzeichen.
Im zweiten eckige Klammern.

Mach mal vor jedes Sonderzeichen einen Backslash \
 
Leider nein, daran liegt es nicht; ich habe es testweise mit...
Rich (BBCode):
find /volume1/Temp -type f -name '*.JPG' -exec cp {} "/volume1/photo/2014" \;
find /volume1/Temp -type f -name '*.ARW' -exec cp {} "/volume1/photo_raw/2014" \;
...probiert, keine Veränderung, weiterhin die oben genannte Fehlermeldung.

Wie gesagt, die zweite Zeile wird ausgeführt, nur die erste nicht...
 
Komisch, bei mir geht das.
Hast du vllt. einen Editor benutzt, der nicht unixkonform ist?
 
Den Windows-Editor. Da dies zumindest grundsätzlich funktioniert, bin ich davon ausgegangen, dass es keine Rolle spielt.
Ich kann es aber nochmal mit einem anderen Editor probieren.
 
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