user_unknown schrieb:
rs1302 schrieb:
Möglicherweise ist ein Befehlt zu schnell oder langsam?
Nein, nicht möglich.
kann man eine art "sleep 1" Option einbauen?
Nein, könnte man zwar, aber wozu soll das gut sein? Die Befehle werden sequentiell abgearbeitet. Wenn es dauert (weile eine Datei 100 GB groß ist) dann dauert es halt, und wenn sie 0 Byte groß ist passiert auch nichts.
Kannst Du sie mal mit
anzeigen lassen, und mit
untersuchen und die Ergebnisse mitteilen?
Außerdem kannst Du das Skript um Meldungen erweitern:
| find . -name '*.jpg' -exec bash -c '
for d; do
if [ ! -e "/Pictures/$(basename "$d")" ] ; then
mv "$d" /Pictures/
echo "verschiebe: $d"
else
echo "Schon da: $d"
fi
done
' {} +
|
Dass die Datei schon da ist kann nicht sein?
Die Daten können noch nicht da sein!
Die Daten liegen auf einem Nas. ICh greife per Terminal auf das NAS zu. Ich habe diverse Skripte am laufen. Normalerweise gibt es keine Probleme.
Ich habe mir einen Test Verzeichnisbaum gebaut und testhalber 10 Bilder hineingelegt. In der obersten Eben liegt das Skript. Aktuell sind KEINE doppelten Bilder über die Verzeichnisse verteilt. Also keine doppelten Daten!
Mit:
find -iname *.jpg
werden im Terminal alle 10 Files angezeigt.
Lasse ich das Skript laufen, werden nur 3 Files verschoben.
änder ich die erste Zeile auf:
find . -name *.jpg -exec bash -c '
also ohne Anführungszeichen, werden 7 Files verschoben.
mit "*.JPG" werden 4 (4 von 5 Großen) JPGs verschoben.
Da "find" im Terminal generell alle Daten korrekt findet, war meine Annahme, dass der mv Befehl vielleicht zeitlich dem find Befehl in die Quere kommt.
Warum funktioniert "find" alleine problemlos, im Skript jedoch nicht???
zu deinen Fragen:
ls -ls liefert:
[/share/Bilder/tmp/zwei/a] # ls -l 2010-03-11-08h33m18.JPG
-rwxrwxrwx 1 admin administ 4174183 Jul 1 2010 2010-03-11-08h33m18.JPG*
File gibt es nicht!
file [/share/Bilder/tmp/zwei/a] # ls -l 2010-03-11-08h33m18.JPG
-sh: file: command not found
suche ich im Terminal alle jpgs, werden alle 10 angezeigt:
[/share/Bilder/tmp] # find -iname '*.jpg'
./zwei/a/2010-03-11-08h33m18.JPG
./zwei/a/2004-03-20-18h02m17.jpg
./zwei/a/2010-03-11-08h33m11.JPG
./zwei/a/2007-01-01-00h00m09.JPG
./zwei/a/2008-11-14-14h35m18.jpg
./zwei/a/2009-02-20-12h41m28.jpg
./zwei/a/2009-11-15-15h54m43.jpg
./zwei/a/2010-01-22-10h25m31.jpg
./zwei/a/2010-03-11-08h33m04.JPG
./zwei/a/2010-03-13-12h29m28.JPG
dann führe ich das Skript aus, wechlse in das Unterverzeichnis in dem zuerst alle 10 Bilder. Dort finden sich dann immer noch 6 Bilder.
[/share/Bilder/tmp/zwei/a] # find -iname '*.jpg'
./2010-03-11-08h33m18.JPG
./2004-03-20-18h02m17.jpg
./2010-03-11-08h33m11.JPG
./2007-01-01-00h00m09.JPG
./2010-03-11-08h33m04.JPG
./2010-03-13-12h29m28.JPG
demnach findet "find" die Files und auch mv alleine funktioniert. Jedoch im Skript zusammen will es einfach nicht.