Am Sonntag, 14. Februar 2010 03:25:53 schrieb David Haller: Hallo David,
Am Sam, 13 Feb 2010, Al Bogner schrieb:
Am Samstag, 6. Februar 2010 20:24:20 schrieb David Haller:
Das zerbröselt's. for .. in `` oder $() ist _IMMER_ schlecht.
find "$DIR" -type f -iname '*.mp3' -exec /bin/bash -c 'for file; do lame ... "$file" "${file//.mp3}_128.mp3" done' find-bash '{}' '+'
Ich frage mich gerade wie ich folgendes ohne for hinkriege. Es geht zB darum, dass ein Skript alle gefundenen Dateien alfabetisch sortiert und diese dann durchnummeriert und als Dateinamen den Ordnernamen verwendet. Grundsätzlich wäre es mir mit for klar, aber mit Davids Konstruktion komme ich nicht weiter.
if test "x${DIR}" = "x." || test -z "$DIR"; then DIR="$PWD"; fi
Ich verstehe die Bedingung nicht. BTW es gibt um avi-Videoschnipsel von einem Camcorder und nicht um mp3. Aufruf soll etwa so sein: video_rename.sh /verzeichnis/zu/videodateien Weder im Verzeichnis, noch im Dateinamen kommen Leerzeichen vor, aber wenn ich schon was neu schreibe, dann sollte es auch damit klar kommen. BTW gibt es eine Möglichkeit hunderte kleine avi-Dateien alfabetisch sortiert zusammenhängend abzuspielen? Wenn ich ein ganzes Band in einem Ordner habe, dann will ich nun die Themen trennen und in verschiedene Ordner schieben. Ich kann natürlich auf Verdacht eine Szene anklicken und mich näherungsweise herantasten.
find "${DIR}" -type d | while read d; do pushd "$d";
Wieder was dazu gelernt. (http://ss64.com/bash/pushd.html) Ich habe dafür dirname und basename verwendet.
i=0; for f in *.mp3; do test -d "$f" && continue; echo mv -i "$f" "${d##*\/}_$(printf "%05i.mp3" $i)";
das muss ich mir im Detail ansehen, wenn ich den Anfang verstanden habe.
i=$((i+1)); done; popd;
Auch noch nicht gekannt: http://ss64.com/bash/popd.html
done
Wenn du anders sortieren willst als es die Shell bei * macht
Das habe ich nicht verstanden. Was meinst du mit anders?
, dann mußt du z.B.
i=0; find .. | sort .. | while read -r file; do ..; done; i=$((i+1)
oder sowas verwenden.
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