Como converter vários arquivos em codificação UTF-8 usando as ferramentas de linha de comando * nix? [duplicado]


Respostas:


56

O iconv converte entre muitas codificações de caracteres. Então, adicionando um pouco de magia do bash e podemos escrever

for file in *.txt; do
    iconv -f ascii -t utf-8 "$file" -o "${file%.txt}.utf8.txt"
done

Isso será executado iconv -f ascii -t utf-8em todos os arquivos que terminam em .txt, enviando o arquivo recodificado para um arquivo com o mesmo nome, mas terminando em .utf8.txtvez de .txt.

Não é como se isso realmente fizesse algo em seus arquivos (porque ASCII é um subconjunto do UTF-8), mas para responder à sua pergunta sobre como converter entre codificações.


2
Você deve citar o var $ i, para lidar com nomes de arquivos com espaços.
— Richard Hoskins

Ele vai fazer as coisas, ele vai adicionar uma BOM para um ...
— jason

Tem certeza de que iconv adicionará uma lista técnica? Fiquei com a impressão de que não seria com o UTF-8.
— Richard Hoskins

5
Acabei de testar isso com o iconv (GNU libiconv 1.11) e ele não adicionou uma lista técnica. Entendo que o iconv só adicionará uma lista técnica se houver uma na entrada, o que não seria em ASCII. A lista técnica é problemática e não é necessária com o UTF-8.
— Richard Hoskins

2
se a sua versão do iconv não suportar o parâmetro -o, você poderá substituí-lo diretamente por >> para usar o redirecionamento do shell.
— rob
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.