URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6874
[ Назад ]

Исходное сообщение
"изменяем суффикс файлов в директории и поддиректориях"

Отправлено Filalex , 22-Окт-07 15:25 
Пишу скрипт на bash, изменяющий расширения имен файлов в заданной директории и всех поддиректориях, со входными параметрами - директория, исходное расширение, требуемое расширение.
Застопорился на таком моменте:
Задача: заменить у файлов суффикс .yy на .xx в текущем и дочерних каталогах
Пишу следующее:

find -type f -name "*.yy" -exec $(for f in *.yy; do mv $f ${f%.rt}.xx; done) {} \;

в каталоге откуда запускаю команду - все отрабатывает правильно, а при переходе к дочернему получаю:

find: ./dir1/file.yy: Access denied

что не так? все необходимые права на файл есть...

Решать за меня не надо, просто подтолкните к решению...


Содержание

Сообщения в этом обсуждении
"изменяем суффикс файлов в директории и поддиректориях"
Отправлено vic , 22-Окт-07 18:03 
>find -type f -name "*.yy" -exec $(for f in *.yy; do mv
>$f ${f%.rt}.xx; done) {} \;

а я тож не понял :)

>Решать за меня не надо, просто подтолкните к решению...

Толкаю :)
rename .yy .xx `find -name \*.yy`


"изменяем суффикс файлов в директории и поддиректориях"
Отправлено Filalex , 22-Окт-07 18:13 
>Толкаю :)
>rename .yy .xx `find -name \*.yy`

неа :(
>rename .yy .xx -name \*.yy

rename: renaming *.yy to *.xx failed: Нет такого файла или каталога
>ls

1.yy  2.yy  3.yy

у меня AltLinux 4.0... может в этом дело?...


"изменяем суффикс файлов в директории и поддиректориях"
Отправлено Filalex , 22-Окт-07 18:22 
>>Толкаю :)
>>rename .yy .xx `find -name \*.yy`

упс, пардон, все нормально, огромное спасибо!!!
не доглядел за find и `` - исправлюсь


"изменяем суффикс файлов в директории и поддиректориях"
Отправлено L0n3R4ng3r , 23-Окт-07 11:36 
>[оверквотинг удален]
>$f ${f%.rt}.xx; done) {} \;
>
>в каталоге откуда запускаю команду - все отрабатывает правильно, а при переходе
>к дочернему получаю:
>
>find: ./dir1/file.yy: Access denied
>
>что не так? все необходимые права на файл есть...
>
>Решать за меня не надо, просто подтолкните к решению...

можно так(меняет файлы с раширением php на c):
#!/bin/bash

find . -name "*.php" -print |
while read line; do
mv $line $(dirname $line)/$(basename $line .php).c
done