Возможно, вам нужно использовать команду perl rename. На моей коробке CentOS это называется «prename».
$ ls
IMG_1.JPG IMG_2.JPG IMG_3.JPG
$ prename 's/^IMG/img/;s/\.JPG$/\.jpg/' *JPG
$ ls
img_1.jpg img_2.jpg img_3.jpg
$
$ prename -h
Usage: prename [OPTION]... PERLEXPR FILE...
Rename FILE(s) using PERLEXPR on each filename.
-b, --backup make backup before removal
-B, --prefix=SUFFIX set backup filename prefix
-f, --force remove existing destinations, never prompt
-i, --interactive prompt before overwrite
-l, --link-only link file instead of reame
-n, --just-print, --dry-run don't rename, implies --verbose
-v, --verbose explain what is being done
-V, --version-control=METHOD override the usual version control
-Y, --basename-prefix=PREFIX set backup filename basename prefix
-z, -S, --suffix=SUFFIX set backup filename suffix
--help display this help and exit
--version output version information and exit
The backup suffix is ~, unless set with SIMPLE_BACKUP_SUFFIX. The
version control may be set with VERSION_CONTROL, values are:
numbered, t make numbered backups
existing, nil numbered if numbered backups exist, simple otherwise
simple, never always make simple backups
Report bugs to pederst@cpan.org
$
Если вы хотите использовать команду dumb rename
из util-linux
(иногда вызываемой rename.ul
), возможно, нужно выполнить ее в два этапа, например
$ ls
IMG_1.JPG IMG_2.JPG IMG_3.JPG
$ rename IMG img *JPG
$ rename JPG jpg *JPG
$ ls
img_1.jpg img_2.jpg img_3.jpg
$
perl
rename
предшествующий тупойrename
найден в util-linux, который вы называете просто старыйrename
. Это даже предшествует Linux.Чтобы ответить на ваш вопрос в общем,
вы обычно используете группы захвата , ссылаясь на них в выражении замены, используя их соответствующие обратные ссылки . Например
Однако в этом конкретном случае было бы проще просто применить модификатор в нижнем регистре
\L
ко всему имени:Еще одна альтернатива, используя
mmv
(удалите,
-n
чтобы фактически выполнить переименование).источник
zmv
«S:zmv '*.JPG' '${(L)f}'
rename 's/.*/\L$&/' *.JPG
была быrename '$_ = lc' *.JPG
Использование
mv
:ш совместим:
Баш (спасибо Steeldriver):
Это зацикливает все
.JPG
файлы в текущем каталоге и переименовывает их в одно и то же имя, причем все заглавные буквы преобразуются в строчные.источник
Самый простой способ, основанный на справочной странице , которая не охватывает регулярные выражения :
источник