Рекурсивная замена кодировки файлов на OS X в Terminal

OS X — Terminal Необходимо рекурсивно пройтись папкам и для определённого типа файла изменить кодировку с WINDOWS-1251 на UTF-8. Сделал выражение с помощью for:

for files in путь_к_папке_с_файлами/.*
    iconv -f WINDOWS-1251 -t UTF-8 "$files" >"$files-utf8"

Но в данном выражении необходимо после очередного выполнения менять ручками "путь_к_папке_с_файлами", что при большом количестве папок, не удобно.

Пытаюсь составить выражение с помощью find, но явно, что есть ошибка:

find путь_к_папке_с_файлами -type f -exec iconv -f WINDOWS-1251 -t UTF-8 '{}' > '{}.utf8' \;

или c уточнением типа файла:

find путь_к_папке_с_файлами -name '*.php' -exec iconv -f WINDOWS-1251 -t UTF-8 '{}' > '{}.utf8' \;

или

find путь_к_папке_с_файлами -name '*.php' -exec iconv -f WINDOWS-1251 -t UTF-8 '${} > '${}.utf8' \;

Вообщем, туплю ;) Нужна помощь, заранее благодарен!


Ответы (1 шт):

Автор решения: Sergei Kirjanov

find путь_к_папке_с_файлами -name '*.php' | perl -pe 'chomp;$_=qq[iconv -f WINDOWS-1251 -t UTF-8 "$_" >"$_-utf8"\n]'

А потом, если понравилось, допишите |sh

→ Ссылка