[ Пред. ] [ Содержание ] [ След. ]

Перекодировку нескольких файлов

[ @console @utf8 ]

 


Например из KOI8-R в UTF8.


Установить, если отсутствуют, две утилиты. Надо рекурсивно пройти по директории и найти все файлы (find), затем напустить на них перекодировщика (recode).


Внимание, результат перекодировки будет записан в те файлы, которые будут найдены, поэтому не помешает бэкап.


Имена всех доступных для перекодирования кодировок можно узнать выполнив команду recode -l.


find dir -type f -exec recode enc1..enc2 '{}' ';'


где


Имена всех доступных для перекодирования кодировок можно узнать выполнив команду recode -l.


Если при открытии текстового файла на экран выводятся крокозябы, то это говорит о том, что данный файл создан в неправильной кодировке. В моем случае этот файл был создан в Windows в его "уникальной" кодировке CP1251, а открыть его требовалось в Ubuntu с "правильной" кодировкой UTF8.


Для того, чтобы произвести смену кодировки тестового файла с CP1251 на кодировку UTF8 нам понадобится пакет enca. Все ниже описанное будет приведено для дистрибутива Ubuntu, но алгоритм действий будет работать и в других дистрибутивах.


Смена кодировки текстового файла с CP1251 на UTF8


Устанавливаем необходимый пакет:


sudo apt install enca


Конвертируем один файл в кодировку локали дистрибутива, которая определяется автоматически:


enconv имя_файла


Вместо имя_файла должен находится полный путь до файла в кодировке CP1251, к примеру: enconv /home/user/1.txt


Если этих файлов окажется несколько, то команда выглядит несколько иначе:


find путь_к_директории -name "*.txt" -exec enconv {} \;


Или так:


find /home/astenix/ -name "*.txt" | enconv


Или так:


find /home/astenix/.LaTeXWorkspace/text/ -type f -exec recode cp1251/..UTF-8 '{}' ';'