Como renomear nomes de arquivos para codificação diferente?

4

Eu tenho 3 tipos de file name codificações no disco rígido montado reiserfs : CP1251, KOI-8, UTF-8 e ASCII. Eu realmente preciso converter todas as codificações para UTF-8, recursivamente. Existe algum utilitário, que irá detectar codificação de origem e convertê-lo em UTF-8 ou eu tenho que escrever script Python?

    
por Pablo 03.01.2015 / 23:07

2 respostas

7

Use convmv, uma ferramenta CLI que converte o nome do arquivo entre diferentes codificações. Para converter de ( -f ) esses encondings para ( -t ) UTF-8, faça o seguinte:

convmv -f CP1251 -t UTF-8 inputfile
convmv -f KOI-8  -t UTF-8 inputfile
convmv -f ASCII  -t UTF-8 inputfile

Além disso, se você quiser converter o conteúdo do arquivo, use iconv , uma ferramenta CLI para converter o conteúdo do arquivo em diferentes codificações. Para converter de ( -f ) esses encondings para ( -t ) UTF-8, faça o seguinte:

iconv -f CP1251 -t UTF-8 inputfile > outputfile
iconv -f KOI-8  -t UTF-8 inputfile > outputfile
iconv -f ASCII  -t UTF-8 inputfile > outputfile
    
por Marcos Roriz Junior 03.01.2015 / 23:18
0

Não. Uma das grandes desvantagens do antigo sistema de páginas de códigos é que não há como detectar qual está sendo usado; você deve simplesmente saber que a priori. Se você souber quais arquivos estão usando essa codificação, poderá converter os nomes usando algo como:

mv somefile 'echo somefile | iconv -f CP1251 -t UTF-8'
    
por psusi 04.01.2015 / 01:32