Klaus Becker: > n'Abend, > > ich habe auf meiner FP jede Menge Fernsehsendungen und möchte die Namen > vereinfachen, etwa so: > > 20141230_2015-VOX-Tierischer_Jahresrueckblick.ts > => tierischer_jahresrueckblick.mpg Ich mache sowas gerne mit qmv aus dem Paket renameutils. Damit kann man interaktiv in einem Texteditor arbeiten. Setzt voraus, dass man einen "ordentlichen" Editor bedienen kann, der bei sowas hilft. > Dazu habe ich mir ein Skript geschrieben, das funktionniert, aber nicht in > Unterordnern. Was heißt, es funktioniert nicht in Unterordnern? Meinst Du, es arbeitet nur mit den Dateien im aktuellen Verzeichnis und nicht rekursiv durch alle Unterverzeichnisse? > Ich habe Serien aufgenommen wie z. B. Yakari, und ohne das Datum und den > Fernsehsender haben die Dateien alle den gleichen Namen. Daher numeriere ich > alle Dateien (und gebe ihnen die Endung "mpg") zunächst mit > > declare -i i=1 > for file in $(find -name "*"); do > mv $file $(echo $file | sed s/$/$i.mpg/g) > (( i = i + 1 )) Ich kann Dein Problem nicht nachvollziehen. Beispiel: $ find . -type f ./a/a ./a/c ./a/b ./c/a ./c/c ./c/b ./b/a ./b/b $ declare -i i=1 $ for file in $(find -name "*"); do > echo $file | sed s/$/$i.mpg/g > (( i = i + 1 )) > done .1.mpg ./a2.mpg ./a/a3.mpg ./a/c4.mpg ./a/b5.mpg ./c6.mpg ./c/a7.mpg ./c/c8.mpg ./c/b9.mpg ./b10.mpg ./b/a11.mpg ./b/b12.mpg Was aber falsch läuft: Dein find findet nicht nur reguläre Dateien, sondern auch Verzeichnisse. Du solltest immer ein Verzeichnis mitgeben und in diesem Fall auf reguläre Dateien filtern: find ./ -type f Das '-name "*"' ist unsinnig und kann weg. Dann hast Du so ein Problem mit Leerzeichen in Datei-/Verzeichnisnamen, das wurde ja schon genannt. Etwas robuster: find . -type f | while read file; do echo $file | sed s/$/$i.mpg/g (( i = i + 1 )) done Benenne ich mein Verzeichnis "c" in "cc cc" (mit Leerzeichen) um kriege ich so: $ find . -type f | while read file; do echo $file | sed s/$/$i.mpg/g ; (( i = i + 1 )); done ./cc cc/a1.mpg ./cc cc/c2.mpg ./cc cc/b3.mpg ./a/a4.mpg ./a/c5.mpg ./a/b6.mpg ./b/a7.mpg ./b/b8.mpg Und wenn Du anstelle dem echo | sed printf verwendest, kannst Du auch führende Nullen haben: printf "%s-%03i.mpg\n" "$file" "$i" J. -- If I had to live on a desert island I would take a mobile phone, preferably a Nokia 8810. [Agree] [Disagree] <http://archive.slowlydownward.com/NODATA/data_enter2.html>
Attachment:
signature.asc
Description: Digital signature