Portál AbcLinuxu, 19. dubna 2024 14:11


Dotaz: Zruseni diakritiky u hodne souboru a adresaru

24.9.2004 18:57 Koleso
Zruseni diakritiky u hodne souboru a adresaru
Přečteno: 431×
Odpovědět | Admin
Zdravim, jak se da nejlepe zrusit diakritika v nazvech souboru i adresaru. Existuje v linuxu ne to nejaky nastroj?

Tech souboru je asi 1000, takze rucni prepisovani nepomuze

Diky moc
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.9.2004 19:57 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Zruseni diakritiky u hodne souboru a adresaru
Odpovědět | | Sbalit | Link | Blokovat | Admin
1. Najdi si vyhledáváním hromadné přejenovávání, je to tu stokrát -- nejlépe ve stylu find | perl

2. Rozhodni se, jak ji chceš přesně zrušit a jestli třebas nechceš při té příležitosti rušit nějaké další divné znaky.

3. Použij operátor y///: y/áčéěďíňóřšťúůýž/aceedinorstuuyz/ (+ totéž pro velká písmena).
25.9.2004 11:43 Koleso
Rozbalit Rozbalit vše Re: Zruseni diakritiky u hodne souboru a adresaru
Tak jsem nasel tyto dve diskuze:
  • http://www.abclinuxu.cz/forum/show/57790
  • http://www.abclinuxu.cz/forum/show/38685
Vzal jsem z ni tento prikaz:
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.
Josef Kufner avatar 25.9.2004 12:24 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Zruseni diakritiky u hodne souboru a adresaru
v Debianu je rename, ktere umi regexpy, takze pokud pouzijes ten:
rename 'y/žš/zs/' *
Hello world ! Segmentation fault (core dumped)
25.9.2004 12:27 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Zruseni diakritiky u hodne souboru a adresaru
Jo, v Debianu je rename v Perlu, proto taky Debian nemůže přejít na UTF-8, protože by přestalo fungovat rename :o)
25.9.2004 12:26 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Zruseni diakritiky u hodne souboru a adresaru
Zřejmě UTF-8. UTF-8 a Perl -- nekonečný zdroj radostí. Snad by to spravilo nějaké use utf8, use locale, use něco-jiného, ale dost to závisí na verzi Perlu, takže to nebudu zkoušet tipovat.

Takže nějakou brutální metodu...
find . -printf '"%p"\n' >tmp1
cstocs utf8 ascii <tmp1 >tmp2
paste tmp1 tmp2 | sed 's/^/mv /' | sh
Nebo 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 "".

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.