Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Использование enca рекурсивно / 2 сообщений из 2, страница 1 из 1
12.11.2009, 15:08
    #36307018
Viper360
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование enca рекурсивно
Доброго времени суток! Задача такова : есть необходимость написать скрипт для перекодирования файловой системы сайта из cp 1251 в utf-8, нашел приложения для таких целей под названием enca. Изучив методы использования приложения определил что функций для рекурсивного его использования нет, поэтому решил написать такой скрипт :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
#!/bin/sh                                 

DIR="."
count= 1 

function list_files()
{                    
    if !(test -d $ 1 )  
    then echo $ 1 ; return;
    fi                   
    cd $ 1                 
    path=`pwd`           
    for i in *           
    do
      if test -d $i ; then
      list_files $i
      cd ..
      else
      cfile=$path/$i
      if [ ${i#*.} == "php" ] || [ ${i#*.} == "js" ] || [ ${i#*.} == "html" ] || [ ${i#*.} == "htm" ] || [ ${i#*.} == "ini" ] || [ ${i#*.} == "xml" ] || [ ${i#*.} == "css" ] ; then
      enca -L russian -x UTF8 $cfile
      echo "Завершено : $path/$i"
      count=`expr $count +  1 `
      fi
      fi
    done
}

if [ $# -eq  0  ] ; then
list_files .
echo "Обработано $count файлов"
exit  0 
fi
for i in $*
do
DIR=$ 1 
list_files $DIR
shift  1 
done
echo "Обработано $count файлов"

Но в этом скрипте есть ошибки, которых я в упор не вижу! Порой вылетает :
Код: plaintext
enca: Cannot open file `/path/file.php' in mode r+b: No such file or directory
Файл действительно отсутствует! Но почему он попал в список я не понимаю. А иногда вообще :
Код: plaintext
./script: line  20 : [: слишком много аргументов

Пожалуйста, помогите найти ошибку(и)! Или может есть другой путь для рекурсивной смены кодировки файлов?
...
Рейтинг: 0 / 0
12.11.2009, 17:36
    #36307389
SerXX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование enca рекурсивно
На вскидку
Код: plaintext
find . -type f -iname '*.php' -exec iconv -f CP1251 -t UTF8 {} -o {}.blabla \; -exec mv -f {}.blabla {} \;
Только пробуйте сначала на резервной копии.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Использование enca рекурсивно / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]