view mobile version net4me Enable JavaScript in your browser! Linux education center net4me.
 
net4me logo

tux

linux commands
shell script
protocol
ip, tcp, smtp, ntp, ftp
telnet terminal
java and javascript
ajax web technology
documentation
howto, man, info
cisco in network
linux server
linux in home
online utility
and more more more.
python development
туе4ьу дштгч

  Содержание подраздела:
Переаскиваю данные из старых мускульных серверов на новые.
Столкнулся с перекодированием большого числа файлов из одной кодировки в другую.
Пришлось написать скриптик, чтоб не мучиться по одному ручками, а автоматизировать процесс:

#!/bin/bash
#====================================
#
# Edit by Ben-Ja http://net4me.net
# On Wed Oct 31 11:36:26 2007
#
#====================================
FILES="*.*"; # на случай поиска по расширению. напр. "*.log"
FROM='cp1251'; # из какой кодировки.
TO='utf8'; # в какую кодировку.
FILEPREFIX='.utf8'; # к названию перекодированного файла добавится.
# start
if [ -z $1 ]
then
echo "Encoding all $FILES in directory From $FROM To $TO";
echo "use $0 /Path_to_recoding_directory/"; echo;
exit 1;
else
echo "Encoding all $FILES in directory $1 From $FROM To $TO"; echo;
for CP12 in `find $1 -name "$FILES"`;
do
echo -ne "=== copy $CP12 ";
cat $CP12 | iconv -f $FROM -t $TO > $CP12$FILEPREFIX;
echo " to $CP12$FILEPREFIX ===";
done
exit 0;
fi
# end

В связи с замечанием, что FOR не может работать с пробелами в именах файлов,
предыдущий скрипт немного переработан.
Теперь пробелы в именах файлов ему не страшны:
#!/bin/bash
#=====================================
#
# Edit by Ben-Ja http://www.net4me.net
# On Tue 09 Sep 2008 10:28:04 AM MSD
# скрипт изменения кодировки файлов.
#=====================================
# суть для одного файла: iconv -f Исходная_кодировка -t В_какую_кодировку > выходной_файл
# CONFIG:
TYPES="*.txt"; # на случай поиска по расширению. напр. "*.log"
FROM='cp1251'; # из какой кодировки.
TO='utf8'; # в какую кодировку.
FILEPREFIX='.utf8'; # к названию перекодированного файла добавится.

# START:
if [ -z $1 ]
then
        echo "Encoding all $TYPES in directory From $FROM To $TO";
        echo "use $0 /Path_to_recoding_directory/"; echo;
        exit 1;
else
        echo "Encoding all $TYPES in directory $1 From $FROM To $TO";
        echo;
        find $1 -name "$TYPES" -type f -print0|while read -d '' SOURCE; do
                echo "========== SOURCE: $SOURCE FROM: $FROM TO: $TO ==========";
                cat "$SOURCE"|iconv -f $FROM -t $TO > "$SOURCE$FILEPREFIX";
                wait;
        done;
        exit 0;
fi
# end

P.S. Интересно, кому в голову пришло называть файлы в линуксе через пробел?
home back top
При копировании материалов нашего портала, сылка на net4me обязательна.
Рейтинг@Mail.ru   Valid HTML 4.01 Transitional     Яндекс цитирования   best billing

 



...

net4me snowflake
rfc2368
 
net4me portal This page last modified: Saturday, October 1, 2011   be in net. net4me

portal net4me linux education center