Skip to main content

Конвертируем файлы из ANSI в UTF8 рекурсивно

Понадобилось давеча конвертировать около 2000 файлов исходников на java из ANSI в UTF8, при этом дописать в начало каждого файла строку на русском для корректного определения этого самого UTF8 🙂

Получился следующий sh скриптик:

find . -iname "*.java" -exec sh -c 'iconv -f cp1252 -t utf-8 {} > {}.utf8' \;
for i in `(find . -name "*.utf8")`; do mv $i ${i/.utf8/}; done
for j in `(find . -name "*.java")`; do echo /*текст на русском*/ | cat - $j > $j.russ; done
for k in `(find . -name "*.russ")`; do mv $k ${k/.russ/}; done

Что и как происходит:

находим все файлы *.java, конвертируем их в UTF8 и записываем результат в *java.utf8

find . -iname "*.java" -exec sh -c 'iconv -f cp1252 -t utf-8 {} > {}.utf8' \;

переименовываем результат обратно в *.java с заменой оригиналов

for i in `(find . -name "*.utf8")`; do mv $i ${i/.utf8/}; done

записываем в начало нового файла строку и вставляем после нее содержимое оригинального файла, сохраняем как *.russ

for j in `(find . -name "*.java")`; do echo /*текст на русском*/ | cat - $j > $j.russ; done

переименовываем результат в *.java с заменой оригиналов

for k in `(find . -name "*.russ")`; do mv $k ${k/.russ/}; done

На работу скрипта уходит буквально пара секунд (:

Комментарий “Конвертируем файлы из ANSI в UTF8 рекурсивно

Оставить комментарий

Авторизация через: 

Your email address will not be published. Required fields are marked *