[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bash-Skript in Ordnern und Unterordnern abarbeiten [gelöst]



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


Reply to: