ako premenovat subory v podadresaroch

Brano Zarnovican zarnovican na pobox.sk
Středa Únor 3 14:38:55 CET 1999


> > > ako premenovat co najjednoduchsie subory v celej adresarovej strukture
> > > xx.htm -> xx.html
> > > myslel som nieco ako "find . -name *htm | xargs mv" a dalej neviem
> > > ( CD Cisco Sales Tools Central Dec98 - v zdrojaku same html a na CD len
> > > htm )
> > 
> > zeby takto ?
> > 
> > 
> > #/bin/sh
> > 
> > for i in `find . -name "*.htm" -print`
> > do
> >   nazov=`basename $i .htm`
> >   mv $i $nazov.html
> > done
> 
>    To se dockate neprijemneho prekvapeni, protoze basename odstrani nejen
> priponu, ale i cestu k souboru. Pri prejmenovani *.htm na *.html staci pouze
> nazov="$i"l, jinak (treba pro obracene prejmenovani) by slo krome pouziti 
> nazov=`dirname $i`/`basename $i .html` take treba
> 
> find . -name \*.html -print | \
>   sed -e 's/^\(.*\)\(\.html\)$/mv \1\2 \1.htm/' | sh -
>   
> Vyhoda je, ze misto sh - muzete napred dat less, a tak se podivat, co se 
> vlastne bude dit. Samozrejme misto sed lze pouzit awk, perl, apod.
Neda mi, aby som vam neukazal este-ine riesenie. Podla mna dost
elegantne:

for i in `find /kde/to/je -name *.html`; do
        mv $i ${i%.html}.htm
done

Pekne sa tam daju nahradit lubovolne pripony.
Na to ${a%b} som narazil v man bash nahodou ked som hladal nieco ine.

						BranoZ


Další informace o konferenci Linux