Почему не работает переименование через find?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

apvs
Сообщения: 52

Почему не работает переименование через find?

Сообщение apvs »

Для примера структура файлов такая:

Код: Выделить всё

$ tree
.
├── a
│   └──  - a.txt
├── b
│   └──  - b.txt
└── c
    └──  - c.txt

3 directories, 3 files
Мне нужно рекурсивно по директориям пройтись и переименовать все txt. Использую https://www.archlinux.org/packages/community/any/perl-rename/
Делаю так:

Код: Выделить всё

find . -type f -name '*.txt' -exec perl-rename -v 's/^ - //g' '{}' \;
и не переименовывает, и ошибок никаких не выдаёт.

Код: Выделить всё

perl-rename -v 's/^ - //g' a/*.txt
тоже не работает.
Зато такое нормально работает:

Код: Выделить всё

cd a; perl-rename -v 's/^ - //g' *.txt
Не пойму, в чём дело, как заставить через find нормально работать?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21457
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Почему не работает переименование через find?

Сообщение Bizdelnick »

man prename

--path, --fullpath
Rename full path: including any directory component. DEFAULT

-d, --filename, --nopath, --nofullpath
Do not rename directory: only rename filename component of path.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
apvs
Сообщения: 52

Re: Почему не работает переименование через find?

Сообщение apvs »

Арчевский perl-rename не распознаёт таких опций и в манe их не видно.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21457
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Почему не работает переименование через find?

Сообщение Bizdelnick »

Тогда усложняйте регулярку, типа s#(^|/) - ([^/]*\.txt)$#$1$2#.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
apvs
Сообщения: 52

Re: Почему не работает переименование через find?

Сообщение apvs »

Во, теперь удалось переименовать.
Спасибо сказали: