пятница, 1 июня 2012 г.

Перекодировка .txt файлов в каталоге из UTF-8 в WINDOWS-1251

Использование

Кладем скрипт в нужный каталог и запускаем. В результате получим файлы с расширением ".win.txt". Оригиналы файлов при этом удаляются!


Код с комментариями


#!/bin/bash

# Проходим циклом по всем файлам в текущем каталоге с расширением txt
# В переменной q содержится имя текущего файла
for q in *.txt
do
   
    # Удаляем расширение
    t=$(echo "$q" | sed -e 's/\.txt$//g')
   
    # Выводим имя файла
    echo "$t"
   
    # Перекодируем содержимое файла из UTF-8 в WINDOWS-1251 и удаляем оригинал
    iconv -c -f UTF-8 -t WINDOWS-1251 "$q" > "$t.win.txt" && rm "$q"
   
done
(или на gist.github.com)

Основную работу делает команда iconv. Ее параметры:
-с — игнорирование ошибок
-f — исходная кодировка
-t — необходимая кодировка

P.S.

Скрипт сделан "на коленке" за 5 минут, а значит, вероятно, его можно улучшить.