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