Как пакетно конвертировать старые файлы в UTF8?

Я думаю, что идеальным решением для меня является скрипт Nautilus, который выполняет преобразование кодировки для выбранных файлов .

Следующий скрипт читает кодировку выбранного файла и выполняет преобразование utf8, если это не utf8, но я не мог понять , как заставить его работать с несколькими файлами :

CHARSET="$(file -bi "$1"|awk -F "=" '{print $2}')"
if [ "$CHARSET" != utf-8 ]; then
iconv -f "$CHARSET" -t utf8 "$1" -c -o "$1.utf8"
fi
3
задан 5 February 2013 в 16:21

2 ответа

Допустим, ваш сценарий называется convert-to-utf-8.sh. Вот как вы можете заставить его работать с несколькими файлами:

for filename in file1 file2 file3 ; do ./convert-to-utf-8.sh "$filename" ; done

Вы можете включить этот цикл for в сам скрипт, например так:

for filename in "$@"; do
    CHARSET="$(file -bi "$filename"|awk -F "=" '{print $2}')"
    if [ "$CHARSET" != utf-8 ]; then
        iconv -f "$CHARSET" -t utf8 "$filename" -c -o "$filename.utf8"
    fi
done

Затем вы можете запустить скрипт с несколькими именами файлов, как это:

./convert-to-utf-8.sh file1 file2 file3
0
ответ дан 5 February 2013 в 16:21

Вот хороший и простой Сценарий Наутилуса, который мне удалось записать благодаря Flimm, как замечено в ответе выше:

#!/bin/sh
#Nautilus Script to determine encoding of selected file(s) and convert to utf8 if necessary
#
for filename in $@; do
    CHARSET="$(file -bi "$filename"|awk -F "=" '{print $2}')"
    if [ "$CHARSET" != utf-8 ]; then
        iconv -f "$CHARSET" -t utf8 "$filename" -c -o "$filename.utf8" &&
        mv -f "$filename.utf8" "$filename"
    fi
done
2
ответ дан 5 February 2013 в 16:21

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

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