Как переименовать имена файлов к другому кодированию?

У меня есть 3 типа file name кодировка на reiserfs смонтированный жесткий диск: CP1251, KOI-8, UTF-8 и ASCII. Я действительно должен преобразовать всю кодировку в UTF-8, рекурсивно. Действительно ли там кто-либо - утилита, которая обнаружит исходное кодирование и преобразует его в UTF-8, или я должен записать сценарий Python?

8
задан 3 January 2015 в 15:07

3 ответа

Используйте 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
10
ответ дан 23 November 2019 в 05:35

Нет. Одна из больших оборотных сторон к старой системе кодовой страницы - то, что нет никакого способа обнаружить, какой используется; необходимо просто знать это априорно. Если Вы действительно знаете, который используют файлы, как который, кодируя тогда можно преобразовать имена с помощью чего-то:

mv somefile `echo somefile | iconv -f CP1251 -t UTF-8`
1
ответ дан 23 November 2019 в 05:35

То же решение с 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
0
ответ дан 11 March 2020 в 19:44

Другие вопросы по тегам:

Похожие вопросы: