Portál AbcLinuxu, 12. května 2025 12:43
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.
enca
(např. v Debianu je v repozitáři)
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 '{}'"
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)
$ find . -type f /var/www/*.php | xargs -I '{}' bash -c "iconv -f utf-8 -t utf-16 '{}' &>/dev/null || echo '{}'"
~$ find /var/www -name *php -type f ......
~$ find /var/www -name "*.php" -type f ......
man isutf8:
isutf8 - check whether files are valid UTF-8
Balíček moreutils.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.