Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Johnycfc 14 Ledna 2011, 18:00:09

Název: potřeba kódovat soubory WINDOWS-1252 do UTF- 8 // něco jako enca
Přispěvatel: Johnycfc 14 Ledna 2011, 18:00:09
Dobrý den,
v jedné složce mám několik set souborů jak v kódování WINDOWS-1252, tak i v UTF-8 a potřebuji je mít všechny v UTF-8. Jakmile provedu příkaz, že to chci z WINDOWS-1252 do UTF-8 a ten soubor je v UTF-8, tak se ty znaky zobrazují špatně (např. francouzština). Dalo by se to zjistit přes enca nebo i další příkazy zda je to v UTF-8, ale těch souborů je dost a následné kopírování, vymazávání a vkládání zpět je zdlouhavé. Navíc budu to potřebovat i do budoucna, není to tedy jednorázová akce. Enca je perfektní věc, jestli je kódování v UTF-8 nebo WINDOWS-1250 a zadám do UTF-8, tak mi to nic nepodělá a bude to prostě správně v UTF-8. Bohužel tam nefunguje WINDOWS-1252 (francouzština aj. jazyky). Něco takového hledám. Nejradši bych to měl na jedno zkopírování do terminálu s pouhou změnou adresáře. Zkoušel jsem hledat i na Google a nejlépe se na to hodí asi:
Kód: [Vybrat]
recode utf8..utf16 <file >/dev/null || recode cp1252..utf8 <file>newfilePotřeboval bych to napsat, tak abych nemusel kopírovat názvy jednotlivých souborů, ale mohl zadat celou složku. Potřebuji přepsat ty soubory. Nejsem tak zkušený, abych to zvládl sám nebo jakékoli jiné funkční řešení.
Děkuji mnhokrát
Název: Re: potřeba kódovat soubory WINDOWS-1252 do UTF- 8 // něco jako enca
Přispěvatel: starenka 14 Ledna 2011, 22:37:50
a iconv znas?

jinak soubory v adreari projdes ala:
Kód: [Vybrat]
find *.priponka | while read file; do prikaz "$file"; done
Název: Re: potřeba kódovat soubory WINDOWS-1252 do UTF- 8 // něco jako enca
Přispěvatel: Pavel1TU 20 Února 2011, 18:54:02
nepochopil jsem zda se to týká obsahu či pouze jmen souborů - na jména doporučím toto:
CONVMV
viz http://man-wiki.net/index.php/1:convmv

nejprve pustíš
Kód: [Vybrat]
convmv -r -f cp1252 -t UTF-8 /home/pavelprojede všechny podadresáře a POUZE VYPÍŠE jaké změny udělá (CP z jaké do jaké si upravíš)

pak pouze přidáš --notest
Kód: [Vybrat]
convmv --notest -r -f cp1252 -t UTF-8 /home/pavela během chvilky máš hotovo :-)

Doplňuji:
-r  projede podadresáře
-f  výchozí codepage (může být i tvar ISO-xxxx-x)
-t  do jaké codepage převést
Název: Re: potřeba kódovat soubory WINDOWS-1252 do UTF- 8 // něco jako enca
Přispěvatel: Uran 21 Února 2011, 11:23:28
Ja pouzivam na prevod titulku z cp1250 nasledujici humpolacky skript.
Kód: [Vybrat]
#!/bin/bash
rm -rf ./zaloha-titulku
mkdir ./zaloha-titulku
find . \! -path ./zaloha-titulku/\* -type f -iregex '.*\(srt\|txt\|sub\)' | while read F
do cp -r --parents "$F" ./zaloha-titulku
done

find . \! -path ./zaloha-titulku/\* -type f -iregex '.*\(srt\|txt\|sub\)' | while read F
do if [ "`file "$F" | grep -o Non-ISO`" = "Non-ISO" ]
then  cstocs -i cp1250 utf8 "$F"
fi
done

Pro vase/tve potreby bych ho upravil:
Kód: [Vybrat]
#!/bin/bash
rm -rf ./zaloha
mkdir ./zaloha
find . \! -path ./zaloha/\* -type f | while read F
do cp -r --parents "$F" ./zaloha
done

find . \! -path ./zaloha/\* -type f | while read F
do if [ "`file "$F" | grep -o cp1252`" = "cp1252" ]
then  cstocs -i cp1252 utf8 "$F"
fi
done

Prvni cast zazalohuje soubory, vdruhe se otestuje o jaky soubor jde a pak se obsah souboru prevede na utf8
Doufam, ze jsem to pri tom prevodu nejak nepomrsil a urcite to jde resit nejak elegantnejs.