Prejmenovani vsech souboru s ruzne velkymi pismeny na soubory s malymi pismeny?

Petr Stehlik pstehlik na sophics.cz
Středa Leden 8 09:22:17 CET 2003


On St, 2003-01-08 at 00:50, Pavel Kankovsky wrote:
> > find ./ -name "*[A-Z]*" -maxdepth $DEPTH -exec rename2lower "{}" \;
> 
> 1. jestlize dojde k prejmenovani adresare, nemusi byt find schopen
>    do toho adresare vlezt a prozkoumat jeho obsah

na to tam prave mam ten DEPTH - volam to v cyklu a postupne
prejmenovavam, tak jak to sam popisujete. Nechtel jsem uverejnovat cely
skript, pro puvodniho tazatele by to bylo dost neprehledne.
 
> Mimochodem, ja bych to jako fanda Titaniku udelal takto:
> 
> find -depth -print0 | perl -ln0e '
>   ($d, $f) = m{^(.*/)?([^/]+)$};
>   ($nf = $f) =~ tr/A-Z/a-z/;
>   next if ($f eq $nf);
>   rename("$d$f", "$d$nf");
> '

tohle je pro me dukaz, ze perl neni normalne citelny zapis (normalne =
basic/pascal/c/java) :-))

> > mv "$*" "`echo $* | awk '{print tolower($0)}'`"
> 
> Tady bych spis vytknul to $*, specialne jeho pouziti bez uvozovek
> v echo $*.

je to hodne slabe, priznavam. Ted me napada, ze i to awk si mozna vylame
zub na jmenu obsahujicim '\n'.

Nejradeji bych docilil jednoradkoveho (jednoskriptoveho) zapisu primo v
tom findu, neco jako

find .... -exec mv '{}' '`echo '{}' | tr [:upper:] [:lower:]`'

ale tady bych mel asi problem s protlacenim {} parametru dovnitr toho
'`''`' zmatku.

Petr




Další informace o konferenci Linux