• Как запустить iconv для перекодировки всех файлов в каталоге?

    @RorreLataf
    Можно использовать вот такой скрипт:
    #!/bin/bash
    
    for file in $(find . -type f)
    do
      name_out=$file
      name_out+="_utf8"
      
      iconv -f cp1251 -t utf8 $file -o $name_out
      
      rm $file
      mv $name_out $file
    done


    Текст скрипта надо сохранить в файл, дать файлу разрешение на выполнение, положить его в тот каталог в котором надо конвертировать файлы и запустить скрипт.

    Внимание!
    Решение
    find -name "mask" -exec iconv -f cp1251 -t utf8 {} -o {} \;

    является неверным, лично убедился!
    Таким образом файлы будут портиться!!!
    Так происходит потому что и входной и выходной файл будут одним файлом, в итоге iconv будет неправильно работать!
    У одних пользователей, такая команда вообще обнуляет файлы, у меня такая команда файлы больше 20 Кб обрезала, но файлы маленькие обрабатывала.
    В общем, для iconv входной и выходной файлы должны быть строго разными!
    Ответ написан
    Комментировать