Bash скрипт за конвертиране на всички файлове от дадена директория в различна кодировка под ОС Linux


Това е един елементарен bash скрипт, който просто ползва iconv, но е доста полезен ако се наложи да конвертирате цяла директория. Най-често приложение - да се конвертира даден сайт от windows-1251 към utf-8 или подобни. Спестява писането на една и съща команда за всеки един файл. Изпълнява се през команден shell.

Инсталация

Примерна употреба

/path/to/dir_iconv.sh ~/txt1 cp1251 utf8 - прекодира всички файлове от директорията ~/txt1 от cp1251 (windows-1251) към utf8.

За по-лесна употреба може да се копира файла в /bin, /usr/bin или която и да е друга директория от $PATH променливата. Тогава горния пример ще изглежда така:

dir_iconv.sh ~/txt1 cp1251 utf8


Естествено оригиналните файлове се запазват, с окончание .old

Кодът

Ето и самият код:

#!/bin/bash

ICONVBIN='/usr/bin/iconv' # тук пътят до изпълнимия файл на iconv

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

Коментари:

Станислав Панайотов (13-08-2008 12:24) :
Върши екстра работа!!!

Обратно към списъка със статиите

Тази страница последно е променяна на 2024-04-20 17:00:07