У меня есть 3 типа file name
кодировка на reiserfs
смонтированный жесткий диск: CP1251, KOI-8, UTF-8 и ASCII. Я действительно должен преобразовать всю кодировку в UTF-8, рекурсивно. Действительно ли там кто-либо - утилита, которая обнаружит исходное кодирование и преобразует его в UTF-8, или я должен записать сценарий Python?
Используйте convmv, инструмент CLI, который преобразовывает имя файла между различной кодировкой. Для преобразования от (-f
) эти encondings к (-t
), UTF-8 делают следующее:
convmv -f CP1251 -t UTF-8 inputfile
convmv -f KOI-8 -t UTF-8 inputfile
convmv -f ASCII -t UTF-8 inputfile
, Кроме того, если Вы хотите преобразовать содержание файла, использование iconv
, инструмент CLI для преобразования содержания файла в различную кодировку. Для преобразования от (-f
) эти encondings к (-t
), UTF-8 делают следующее:
iconv -f CP1251 -t UTF-8 inputfile > outputfile
iconv -f KOI-8 -t UTF-8 inputfile > outputfile
iconv -f ASCII -t UTF-8 inputfile > outputfile
Нет. Одна из больших оборотных сторон к старой системе кодовой страницы - то, что нет никакого способа обнаружить, какой используется; необходимо просто знать это априорно. Если Вы действительно знаете, который используют файлы, как который, кодируя тогда можно преобразовать имена с помощью чего-то:
mv somefile `echo somefile | iconv -f CP1251 -t UTF-8`
То же решение с iconv
, что и @psusi sugeses, но с циклом и while-картой:
Также oneline shell sh
скрипт:
for f in /path/*.txt; do mv $f `echo $f | iconv -f 866 -t UTF-8`; done
С чтением while-card из канала line:
echo * | for f in `read f&&echo $f`; do mv $f `echo $f | iconv -f 866 -t UTF-8`; done