Bash скрипт за конвертиране на всички файлове от дадена директория в различна кодировка под ОС Linux
Това е един елементарен bash скрипт, който просто ползва iconv, но е доста полезен ако се наложи да конвертирате цяла директория. Най-често приложение - да се конвертира даден сайт от windows-1251 към utf-8 или подобни. Спестява писането на една и съща команда за всеки един файл. Изпълнява се през команден shell.
Инсталация
- съхранява се кода в файл, например dir_iconv.sh, като за целта се ползва какъвто и да е редактор (vi, pico, nano, mcedit, ...)
- дават се права за изпълнение: chmod +x dir_iconv.sh
Примерна употреба
/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) :
Върши екстра работа!!!
Обратно към списъка със статиите
Тази страница последно е променяна на 2025-04-30 14:14:39