Klaus Becker <colonius@free.fr> (Di 13 Dez 2016 18:05:17 CET): > > 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. > > Mein Skript führt zunächst ein "detox" aus. > > > Etwas robuster: > > > > find . -type f | while read file; do > > echo $file | sed s/$/$i.mpg/g > > (( i = i + 1 )) > > done > Das hat's gebracht, danke ! > find mit "while read file" kannte ich nicht, das ist eine einfache Lösung. Aber auch die oben skizzierte Lösung wird versagen, wenn Zeilenumbrüche im File- oder Verzeichnisnamen sind, oder wenn der Filename hinten dran Leerzeichen hat. Das wird(!) passieren. #!/bin/bash find "${@-.}" -type f -print0 | while read -d $'\0; do echo "<<$REPLY>>" done (Allerdings habe ich das mit dem sed dann trotzdem noch nicht richtig hinbekommen.) -- Heiko
Attachment:
signature.asc
Description: Digital signature