Re: Bash-Skript in Ordnern und Unterordnern abarbeiten
Am 12.12.2016 um 21:34 schrieb Klaus Becker <colonius@free.fr>:
> n'Abend,
Hallo Klaus,
> 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
>
> Dazu habe ich mir ein Skript geschrieben, das funktionniert, aber nicht in
> Unterordnern.
>
> 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 ))
> done
>
> Das funktionniert aber nicht in Unterordnern, und ich weiss nicht, wie ich das
> hinkriegen soll. "find . -type d" gibt Ordner und Unterordner an, aber was
> mache ich dann damit?
>
> Ich vermute, ich muss dem Skript beibringen, nacheinander in alle Unterordner
> zu gehen und dort die Befehle jeweils abzuarbeiten, das schaffe ich aber
> nicht.
>
> Gibt es da eine Lösung oder muss ich die Unterordner jeweils händisch angeben?
In der Manpage von "find" gibt es den Hinweis auf die Option "-print0". Im
Zusammenspiel mit "xargs" und der Option "-0" (Null, kein O) bekommst Du
genau das, was Du haben möchtest.
Beispiel: Alle Dateien in einem Verzeichnis inkl. Unterverzeichnisse
ermitteln und Prüfsumme ermitteln:
find . -type f -print0 | xargs -r -0 sha512sum
> schönen Abend
>
> Klaus
>
Liebe Grüße
Thilo
Reply to: