|
|
||
|
|
Содержание подраздела:
Переаскиваю данные из старых мускульных серверов на новые. Столкнулся с перекодированием большого числа файлов из одной кодировки в другую. Пришлось написать скриптик, чтоб не мучиться по одному ручками, а автоматизировать процесс: #!/bin/bash #==================================== # # Edit by Ben-Ja http://net4me.ru # 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.ru
# 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. Интересно, кому в голову пришло называть файлы в линуксе через пробел? Более полную информацию по этой теме можно получить на новом сайте net4me.net |