Portál AbcLinuxu, 19. dubna 2024 14:11
ls|perl -nle '($f=$_)=~s/\?/\%3E/g; rename $_,$f if $f ne $_;'a prepsal na tu verzi s operatorem y///
ls|perl -nle '($f=$_)=~y/ž/z/; rename $_,$f if $f ne $_;'nicmene to nefunguje, z testovaciho souboru "ježíšek" se stane "jezzíz?ek". Kde delam chybu? Kdyz pouziji operator s/ž/z/g, tak sice to vytvori soubor "jezíšek", ale do toho operátoru nemohu narvat víc českých znaků najednou.
rename 'y/žš/zs/' *
find . -printf '"%p"\n' >tmp1 cstocs utf8 ascii <tmp1 >tmp2 paste tmp1 tmp2 | sed 's/^/mv /' | shNebo něco v tom smyslu. Opakovat podle hloubky vnoření, protože si to přejmenovává adresáře pod rukama. Nebo to poctivě rekursivně procházet, ale komu by se do toho chtělo... Jo, a cstocs nefunguje s UTF-8 locale (je v perlu ;-) takže si ho předtím nastav na něco ne-UTF-8, třeba "".
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.