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