como converter arquivos .xml em massa em um diretório para UTF-8, mantendo o mesmo nome de arquivo

0

Eu tenho muitos arquivos .xml que são codificados em ISO-8859-1, e eu quero todos eles em UTF-8.

Eu descobri o código para convertê-los individualmente, o que é:

iconv -f ISO-8859-1 -t UTF-8 filename.xml > newfilename.xml

e funciona bem.

O que eu quero saber é como escrever um script de shell para limpar automaticamente todos os arquivos .xml em um diretório e, em seguida, substituir os arquivos antigos pelos novos arquivos convertidos, mantendo o mesmo nome de arquivo.

Sou novo no shell de scripts, por isso a ajuda será muito apreciada.

    
por Tren 10.09.2014 / 12:25

1 resposta

2

você pode fazer isso na linha de comando em um shell bash

for i in *.xml; do
    iconv -f ISO-8859-1 -t UTF-8 "$i" > "$i.1" && mv "$i.1" "$i"
done

isso basicamente pega todo o arquivo xml, coloca-os no Iconv para filname.xml.1 e então move o arquivo de volta para o nome do arquivo original

deu uma rápida olhada no iconv e aqui está o que deveria ser (se você está usando a versão GNU)

for i in *.xml; do
    iconv -sc -f ISO-8859-1 -t UTF-8 "$i" > "$i.1" && mv "$i.1" "$i"
done

a opção -s silencia os avisos, e a opção -c omite caracteres inválidos da saída.

    
por 10.09.2014 / 12:54