powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Использование enca рекурсивно
2 сообщений из 2, страница 1 из 1
Использование enca рекурсивно
    #36307018
Фотография Viper360
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток! Задача такова : есть необходимость написать скрипт для перекодирования файловой системы сайта из 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
Использование enca рекурсивно
    #36307389
SerXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На вскидку
Код: plaintext
find . -type f -iname '*.php' -exec iconv -f CP1251 -t UTF8 {} -o {}.blabla \; -exec mv -f {}.blabla {} \;
Только пробуйте сначала на резервной копии.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Использование enca рекурсивно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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