Пересаджуючи старий проект на Twitter Bootstrap я стикнувся з необхідністю перекодування шаблонів HTML з кодової сторінки window-1251 у UTF-8. Шаблони всі були в одному каталозі, мали розширення *.tmpl і їх було не багато, але запускати для кожного файлу iconv було якось не по лінуксоїдські. Проблема була ще й у методі конвертації утиліти iconv – вона не перезаписувала файл, а робила вивід у новий. Тобто для кожного файлу треба було зробити такі дії:
- Перевести з cp1251 у utf8 та зберегти у новому файлі
- Замінити старий файл новим
Писати сценарій для такої простої операції не варто, тому я зробив це у 3 команди, але потім трохи подумав і зменшив їх до 2:
$ ls *.tmpl | sed s/tmpl$/tmp/ | xargs -I '{}' iconv -f cp1251 -t utf8 -o '{}' '{}'l
Знаходимо в поточній директорії всі файли шаблонів (з розширенням tmpl), змінюємо розширення на tmp, конвертуємо файл *.tmpl у *.tmp. Тепер tmp-файли містять шаблони в UTF-8 кодуванні.
А тепер у старі tmpl-файли кладемо новий зміст:
$ ls *.tmp | xargs -I '{}' mv '{}' '{}'l
Якщо вам треба перекодувати файли, що розташовані в піддиректоріях, то змініть команду ls на find.