Am Donnerstag, 18. Februar 2010 23:32:02 schrieb David Haller: Hallo David,
Am Don, 18 Feb 2010, Al Bogner schrieb: [..]
Siehst du hier was verdächtiges? Das hat bereits zig Male problemlos funktioniert.
#!/bin/bash
[..]
find "$1" -type f -regex ".*\.avi$" | sort | while read -r FILE;
^^^^^^^^^^^^^^^^^ == -name '*.avi' (und das wäre schneller, da ein einfacher glob/Stringvergleich reicht und nicht ne RE geparst und gematcht werden muß.
Stimmt, ich vergesse das immer wieder, weil ich mit regex auch schnell mal komplizierteres testweise machen kann. Bei etwa max. 500 Dateien in einem Verzeichnis bis jetzt, fiel das aber nicht auf.
do
NEWFILE="$MYDIR""/""${TOPIC##*\/}_$(printf "%04i.avi" $i)"
NEWFILE="${MYDIR}/${TOPIC##*\/}_$(printf '%04i.avi' $i)"
mv "$FILE" "$NEWFILE"
Du fängt Kollisionen nicht ab! Am einfachsten:
mv -i "$FILE" "$NEWFILE"
Hmm, will ich das in meinem Fall? Eine Kolliision ist nur dann denkbar, wenn ich das Script ein 2. x aufrufe und die Datei durch sich selbst ersetzt werden soll. In diesem Fall soll gar nichts passieren. Das ist mir auch schon passiert und dann gibt es Fehlermeldungen, die ich ignorieren kann. Da die Dateien aus einem Capture stammen, haben sie immer das selbe Schema und auch nicht zufällig denselben Dateinamen in den umbenannt werden soll. Aber du hast recht, das könnte den Fall erklären, wo ich Dateien verloren habe. Wenn ich 1x das Skript bereits habe laufen lassen und nachträglich Dateien dazu oder weg gebe und das Script wieder laufen lasse, kommt es zu einer Kollision. Nur will ich dann nicht 500x gefragt werden. Bei der 1. Datei sollte dann einfach auf die Kollision hingewiesen werden und abgebrochen werden. Wie mache ich das effizient? Mit "if -f" ? Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org