LINUX.ORG.RU

то ли я неумный, то ли одно из двух...


0

0

Всем привет!

столкнулся с следующей траблой - каждый день получаю файлы в изначально utf8 кодировке, затем на своем серваке перекодирую их обратно в windows-1251 утилитой `convmv` :

============= convert.sh
for d in 'ls -F |grep \/';

do

cd $d

for i in *;

do
echo $i
/usr/local/bin/convmv -r -f cp1251 -t utf8 --notest --replace $i

done;
#cd ..
done;
=============

НО! когда запускаешь это счастье руками - перекодируются каталоги и подкаталоги , файлы... в общзем все, рекурсивно.

но стоит мне добавить в cron строки вида

40 19 * * * /usr/local/sbin/kod1.sh

где kod1.sh:
--------
cd /path/to/smb
./convert.sh
--------


и convert.sh начинает конвертировать фалы в /root директории!
пробовал на BSD 6.3 - с имитировал каталоги сервера, права, пользователей - выше описанные строчки работают на раз-два!

Есил кто сталкивался с подобной ситуацией - подскажите плиз!
Спасибо!

Ответ на: комментарий от wfrr

конечно такая мысль была. но я так и не понял куда всовывать параметры для find .... то что команда имеет синтаксис find /path/to --type f --exec `convmv {}`\; это я понял... но параметры convmv ?.....

dev-ice
() автор топика
Ответ на: комментарий от dev-ice

> конечно такая мысль была. но я так и не понял куда всовывать параметры для find .... то что команда имеет синтаксис find /path/to --type f --exec `convmv {}`\; это я понял... но параметры convmv ?.....

А что тебе мешает подставить параметры между convmv и {}?

Ну или если хочешь, чтобы было круто, делай так

find /where/ --type f | xargs convmv -a -b -c -d -e

Uncle_Theodore ★★
()
Ответ на: комментарий от Uncle_Theodore

точно! завтра попробую, отпишусь... спасибо!

dev-ice
() автор топика
Ответ на: комментарий от polachok

Re: то ли я неумный, то ли одно из двух... а голову включить пробовал, не?

find /path/to --type f --exec /usr/local/bin/convmv -r -f cp1251 -t utf8 --notest --replace {} \; polachok * (*) (28.02.2008 23:10:34)

========

я что только не пробовал фик! эта строка выдает параметры convmv...

dev-ice
() автор топика
Ответ на: комментарий от omerm

1. c двойными кавычками - никак , только с ``, но при этом очень медленно работает convmv, явно ему мешает find. + к тому же файлы не перекодировалисьЮ, но было видно, что скрипт бегает по директориям и поддиректориям.

dev-ice
() автор топика

Допиши второй строкой в convert.sh: cd $1 и потом вызывай его как convert.sh /path/to/smb А вообще да, с find было бы гораздо проще.

Laz ★★★★★
()
Ответ на: комментарий от anonymous

>$ find . --type f find: invalid predicate `--type' $ find . -type f ...

У аргументов find должен быть один минус.

Laz ★★★★★
()
Ответ на: комментарий от Uncle_Theodore

> Ну или если хочешь, чтобы было круто, делай так

> find /where/ --type f | xargs convmv -a -b -c -d -e

Что-бы былол круто, нужно делать так:

find /where/ -type f -print0 | xargs -0 convmv -a -b -c -d -e

fmj
()

Лично я вам советую использовать find, ваш цикл

for d in `ls -F |grep \/`

сломается, если в именах каталогов будет пробелы, а если там будут стоять знаки вопроса или другие символы шаблона, то результат будет совсем не предсказуемый...

mky ★★★★★
()
Ответ на: комментарий от mky

Спасибо всем за участие! Вопрос снят. Решился он путем установки первоначального скрипта на BSD 6.3 и монтированием smbfs с проблемного сервера. Сервер Red Hat Advanced Server 5.

dev-ice
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.