Portál AbcLinuxu, 12. května 2025 12:43

Dotaz: Hromadné zjištění kódování souborů

3.4.2015 16:25 Marek
Hromadné zjištění kódování souborů
Přečteno: 384×
Odpovědět | Admin
Ahoj, poradí nějaký profík prosím jak zjistit z příkazové řádky kódování souboru ? Potřebuji zkontrolovat cca 8000 souborů zda mají kódování UTF-8. Děkuji za pomoc. M.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jendа avatar 3.4.2015 16:45 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Hromadné zjištění kódování souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Někdy to řekne příkaz file, jinak bych zkoušel detekovat četnost jednotlivých znaků pokud znáš alespoň jazyk/rodinu jazyků. A pak to můžeš zkusit jako UTF8 dekódovat jestli to bude validní. Ale obecně taková věc udělat nejde.
3.4.2015 16:56 Jindřich Makovička | skóre: 17
Rozbalit Rozbalit vše Re: Hromadné zjištění kódování souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
iconv -f utf-8 -t ucs-4 filename.txt > /dev/null

pokud ve filename.txt není validní utf8, iconv vrátí chybu
3.4.2015 16:57 Masca
Rozbalit Rozbalit vše Re: Hromadné zjištění kódování souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
enca (např. v Debianu je v repozitáři)
alles32 avatar 3.4.2015 17:57 alles32 | skóre: 15 | Evropa
Rozbalit Rozbalit vše Re: Hromadné zjištění kódování souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
pic.

tohle zobrazi vsechny ne utf-8 soubory v aktualnim adresari.

$ find . -type f | xargs -I '{}' bash -c "iconv -f utf-8 -t utf-16 '{}' &>/dev/null || echo '{}'"
wamba avatar 4.4.2015 04:37 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Hromadné zjištění kódování souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
pomocí Perlu s příslušnou knihovnou
find .|perl -MFile::LibMagic -nE 'chomp; my @coding= ("utf-8","us-ascii");my $magic = File::LibMagic->new();  say  $_ if ! $magic->info_from_filename("$_")->{encoding} ~~ @coding'
zkoušel jsem to na cca 15k souborech(i s netextovými 17k) a trvalo to nějakých 30s.(problém dělali symlinky na nexistující soubory, u těch to házelo chybu)
This would have been so hard to fix when you don't know that there is in fact an easy fix.
alles32 avatar 4.4.2015 07:48 alles32 | skóre: 15 | Evropa
Rozbalit Rozbalit vše Re: Hromadné zjištění kódování souborů
find zna file -type. '-type f' odfiltruje vse krom normalniho souboru ;].
4.4.2015 11:40 Marek
Rozbalit Rozbalit vše Re: Hromadné zjištění kódování souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Moc děkuji všem za tipy. Použil jsem kompletní řešení od alles32. Projde to celý strom což je super. Snažil jsem se to použít jen na php soubory a sustit příkaz odkudkoli ale nedaří se...
$ find . -type f /var/www/*.php | xargs -I '{}' bash -c "iconv -f utf-8 -t utf-16 '{}' &>/dev/null || echo '{}'"
alles32 avatar 4.4.2015 12:53 alles32 | skóre: 15 | Evropa
Rozbalit Rozbalit vše Re: Hromadné zjištění kódování souborů
find umi -name. odkudkoli to jde taky, jen to chce zamenit cestu kde se ma findovat, napr.
~$ find /var/www -name *php -type f ......
4.4.2015 13:09 chrono
Rozbalit Rozbalit vše Re: Hromadné zjištění kódování souborů
Nemá ísť to *php do apostrofov?
4.4.2015 15:25 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Hromadné zjištění kódování souborů
~$ find /var/www -name "*.php" -type f ......
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
4.4.2015 18:01 Radovan Garabik
Rozbalit Rozbalit vše Re: Hromadné zjištění kódování souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
man isutf8:

isutf8 - check whether files are valid UTF-8

Balíček moreutils.

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.