У меня есть много XML-файлов, которые закодированы в ISO-8859-1, и я хочу, чтобы они все были в UTF-8.

Я разобрался с кодом, чтобы конвертировать их по отдельности, а именно:

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

и работает нормально.

Я хочу знать, как написать сценарий оболочки, чтобы автоматически очистить все XML-файлы в каталоге, а затем заменить старые файлы новыми преобразованными файлами, но при этом сохранить то же имя файла.

Я новичок в сценариях оболочки, поэтому помощь будет высоко ценится.

1 ответ1

2

Вы можете сделать это в командной строке в оболочке bash

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

это в основном берет все xml-файлы, помещает их через Iconv в filname.xml.1 и затем перемещает этот файл обратно к исходному имени файла

бросил быстрый взгляд на iconv, и вот, что мне нужно (если вы используете версию GNU)

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

опция -s отключает предупреждения, а опция -c исключает недопустимые символы в выводе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .