Eu prefiro usar recode
para isso. Não está instalado por padrão, mas está disponível através do pacote com o mesmo nome. Também muda os finais de linha CRLF para LF.
sudo apt-get install recode
recode cp1250.. file.txt
Você pode fazer isso para todos os arquivos txt em uma pasta inteira
recode cp1250.. ./*.txt
E de forma recursiva, combinando com find
find . -type f -name "*.txt" -exec recode cp1250.. {} +
A opção padrão é usar o comando iconv
, que é instalado por padrão, mas isso não altera os finais de linha, então você precisa fazer isso em outra etapa:
iconv -f cp1250 < file.txt | sed $'s/\r$//' > newfile.txt
A longo prazo, recomendo alterar o conjunto de caracteres padrão do editor do Windows e a linha que termina nos terminais de linha UTF-8 e UNIX (LF, \n
) para evitar a conversão após o fato.
CR significa Retorno de carro ( \r
)
LF significa Alimentação de linha ( \n
)
O Windows usa ambos, mas sistemas semelhantes a unix usam apenas LF .