cp: No such file or directory

Status
Für weitere Antworten geschlossen.

ringebu82

Benutzer
Mitglied seit
17. Feb 2014
Beiträge
4
Punkte für Reaktionen
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
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
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
 
Mitglied seit
10. Jan 2014
Beiträge
393
Punkte für Reaktionen
0
Punkte
0
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 \;
 

ringebu82

Benutzer
Mitglied seit
17. Feb 2014
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
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é
 
Mitglied seit
10. Jan 2014
Beiträge
393
Punkte für Reaktionen
0
Punkte
0
Es liegt vermutlich an den Sonderzeichen.
Im ersten Aufruf sind Leerzeichen.
Im zweiten eckige Klammern.

Mach mal vor jedes Sonderzeichen einen Backslash \
 

ringebu82

Benutzer
Mitglied seit
17. Feb 2014
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
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...
 
Mitglied seit
10. Jan 2014
Beiträge
393
Punkte für Reaktionen
0
Punkte
0
Komisch, bei mir geht das.
Hast du vllt. einen Editor benutzt, der nicht unixkonform ist?
 

ringebu82

Benutzer
Mitglied seit
17. Feb 2014
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
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