Потребовалось сконвертировать файлы, расположенные в подкаталогах, из кодировки cp1251 в utf8 в ubuntu 14.04. Разве это проблема в linux? Оказывается да…

Долгие и продолжительные мучения с использованием enconv и decode закончились ничем. Команды срабатывали без ошибок и … конвертации. Как было, так и осталось.

Дело сделала команда:

find . -name "*.cpp" -exec iconv -f cp1251 -t utf8 -o {}.new {} \; -exec mv {}.new {} \;

осталась только одно маленькое черное пятнышко, которое сильно расстраивала мою перфекционистскую сучность - конец строки в формате dos. Этого пережить было нельзя. На выручку пришел vim.

:arg **/*.cpp
:argdo :set ff=unix | update

и все в полном ажуре! Думаю можно было обойтись без невнятных encode одними только средствами vim

:arg **/*.cpp
:argdo :e ++enc=cp1251 | :set fenc=utf=8 | :set ff=unix | update

И не мучиться. Кстати, решение при помощи vim будет работать на всех платформах, как я понимаю.