Скрипт Ubuntu UTF-8 - PullRequest
       12

Скрипт Ubuntu UTF-8

0 голосов
/ 25 января 2012

У меня есть этот скрипт, который работает с iconv для автоматического преобразования кодировки группы файлов в каталоге в UTF-8, и он изменяет исходное расширение файлов на .old, но я хочу знать, как изменить скрипт, чтобы сделатьон просматривает и конвертирует все файлы в каталоге и все файлы во всех подкаталогах.

код терминала:

sudo convert/dir_iconv.sh convert/books cp1251 utf8

сценарий dir_iconv.sh

#!/bin/bash

ICONVBIN='/usr/bin/iconv' # path to iconv binary

if [ $# -lt 3 ]
then
echo "$0 dir from_charset to_charset"
exit
fi

for f in $1/*
do
if test -f $f
then
echo -e "\nConverting $f"
/bin/mv $f $f.old
$ICONVBIN -f $2 -t $3 $f.old > $f
else
echo -e "\nSkipping $f - not a regular file";
fi
done

Ответы [ 2 ]

0 голосов
/ 13 апреля 2013

Если iconv работает не так, как вы ожидали, vim также может выполнить эту работу:

for f in *.*; do vim -c "set fileencoding=utf8|wq" $f; done
0 голосов
/ 25 января 2012

Вместо for f in $1/* попробуйте использовать что-то вроде for f in $(find $1 -type f).Кроме того, опция -type f в команде find пропускает нефайловые объекты, поэтому test и условная логика не нужны.

[edit]

Например, это можетработа, полностью непроверенная (немного подчищено и форматирование):

#!/bin/bash

ICONVBIN='/usr/bin/iconv' # path to iconv binary

if [[ $# -lt 3 ]]; then
    echo "$0 dir from_charset to_charset"
    exit
fi

for f in $(find $1 -type f); do
    echo "Converting $f"
    /bin/mv $f $f.old
    $ICONVBIN -f $2 -t $3 $f.old > $f
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...