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

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: