Vous devez peut-être utiliser la commande perl rename. Sur ma boîte CentOS, cela s'appelle «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 [email protected]
$
Si vous souhaitez utiliser la rename
commande dumb de util-linux
(parfois appelée rename.ul
), il faut peut-être la faire en deux étapes, par exemple
$ 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
précéder le stupiderename
trouvé dans util-linux que vous appelez plain oldrename
. Il est même antérieur à Linux.Pour répondre à votre question dans le générique,
vous utiliseriez généralement des groupes de capture , en vous référant à eux dans l'expression de remplacement en utilisant leurs références arrières correspondantes . Par exemple
Cependant, dans ce cas particulier, il serait plus simple d'appliquer simplement le modificateur minuscule
\L
au nom entier:Une autre alternative, en utilisant
mmv
(supprimez le
-n
pour effectuer le renommage).la source
zmv
:zmv '*.JPG' '${(L)f}'
rename 's/.*/\L$&/' *.JPG
seraitrename '$_ = lc' *.JPG
En utilisant
mv
:compatible sh:
bash (Merci steeldriver):
Cela va parcourir tous les
.JPG
fichiers du répertoire en cours et les renommer avec le même nom avec tous les caractères majuscules convertis en caractères minuscules.la source
La manière la plus simple et basée sur la page de manuel qui ne couvre pas une expression régulière :
la source