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.