Перед пользователем, переходящим с Windows на Mac, порой может встать задача, невыполнимая, на первый взгляд, в разумное время. Это перекодирование большого количества текстовых файлов (Notepad, etc.) в кодировку используемую в MacOSX. Или обратно — в случае регулярного обмена файлами с Windows-пользователями.
Использование команды iconv
* Запустите Terminal
* Перейдите в каталог с файлами, которые Вы хотите преобразовать из кодировки Windows (windows-1251) в кодировку MacOSX (utf-8)
* Выполните следующую команду:
for i in *; do iconv -f windows-1251 -t utf-8 «$i» >tmp; mv tmp «$i»; done
Что можно изменить:
* вместо wildcard «*» можно указать более точное значение, скажем, «*.txt»
* если Вы хотите обратную перекодировку — поменяйте местами входную и выходную кодировки (-f utf-8 -t windows-1251)
* если вы хотите перекодировать между другими кодировками, то вот список поддерживаемых командой iconv кодировок можно получить командой iconv -l
Возможная проблема: если слишком много файлов, может не поместиться в environment (там ограничение на размер). Или куча подкаталогов, которые тоже надо обработать.
Решение:
find . -name «*.txt» | while read i; do iconv -f windows-1251 -t utf-8 «$i» >tmp; mv tmp «$i»; done
Нюансы: ищет во всех подкаталогах от текущего. Не обязательно переходить в обрабатываемый каталог — для этого достаточно будет заменить «.» в параметрах find на имя каталога в который переходить (не забывайте, что имя с пробелами и некоторыми другими символами лучше всего заключать в двойные или даже одинарные кавычки)
Похожие статьи: