Пишу скрипт на 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
что не так? все необходимые права на файл есть...
Решать за меня не надо, просто подтолкните к решению...
>find -type f -name "*.yy" -exec $(for f in *.yy; do mv
>$f ${f%.rt}.xx; done) {} \;а я тож не понял :)
>Решать за меня не надо, просто подтолкните к решению...
Толкаю :)
rename .yy .xx `find -name \*.yy`
>Толкаю :)
>rename .yy .xx `find -name \*.yy`неа :(
>rename .yy .xx -name \*.yyrename: renaming *.yy to *.xx failed: Нет такого файла или каталога
>ls1.yy 2.yy 3.yy
у меня AltLinux 4.0... может в этом дело?...
>>Толкаю :)
>>rename .yy .xx `find -name \*.yy`упс, пардон, все нормально, огромное спасибо!!!
не доглядел за find и `` - исправлюсь
>[оверквотинг удален]
>$f ${f%.rt}.xx; done) {} \;
>
>в каталоге откуда запускаю команду - все отрабатывает правильно, а при переходе
>к дочернему получаю:
>
>find: ./dir1/file.yy: Access denied
>
>что не так? все необходимые права на файл есть...
>
>Решать за меня не надо, просто подтолкните к решению...можно так(меняет файлы с раширением php на c):
#!/bin/bashfind . -name "*.php" -print |
while read line; do
mv $line $(dirname $line)/$(basename $line .php).c
done