Re: (SOLVED) Re: Alle Dateiendungen finden
Nochmal ich :)
Thorsten Strusch schrieb:
> Hi Thorsten,
>
> Thorsten Hamester schrieb:
>> Hallo Matthias Houdek und Liste,
>>
>>> Natürlich in einer weiteren Pipe:
>>>
>>> ... | sort -u | unic -c > dateiendungsliste.txt
>> Kopfstand im Aschekasten, ja klar, an den befehl hab ich nicht mehr
>> gedacht.
>> Dennoch hat er mir immer noch folgenden Pfad zerlegt
>> /pfad/pfad/Test/kav4samba-linux-5.0.4.0/kav4samba/
>> als Endung "0/kav4samba/bin"
>> aber die Datei /pfad/pfad//poi-bin-2.5.1-final-20040804.tar.gz
>> hat er richtig zerlegt als gz
>> Es hat sich zwar erledigt aber es würde mich doch interessieren wie
>> sowas optimiert werden könnte.
>
> Die bash kann dir dabei auch schon helfen, siehe:
> http://www.tldp.org/LDP/abs/html/refcards.html#AEN18911
> Table B-5. String Operations
>
> In der Anwendung heißt das:
> DATEI=Dateiname.tar.gz
> t@str:/tmp$ echo ${DATEI##*.}
> gz
>
> Jetzt muß man das nur noch mit dem find Befehl verquicken.
> Folgendes zeigt, dass die Dateien eingesetzt werden:
>
> find . -type f -exec echo '${{}##*.}' \;
> ${./iof.trs##*.}
> ${./fgwg.123##*.}
> ${./fdfgw.dfe##*.}
>
> Sobald man aber die einfache Hochkommatas entfernt,
> gibt es eine 'bad substitution'. Hier muß also noch
> ein wenig 'escaped' werden - weiß jemand wie genau?
Über ein externes Programm funktioniert es:
find . -type f -iname "*\.*" -exec /tmp/hilfsprogramm {} \;
mit :
,---[ /tmp/hilfsprogramm ]----
| #!/bin/sh
| echo ${1##*.}
`----------------/
Grüße
Thorsten
Reply to: