在 CentOS 7 中批量重命名 JPG 文件名

crm*_*cco 2 linux unix centos batch rename

我的目录中有大约 80 个这样的文件。

-rw-rwxr--+ 1 vagrant vagrant  38122 Nov 13 12:19 CRMPicco RFC16 Women's 80.jpg
-rw-rwxr--+ 1 vagrant vagrant 101286 Nov 13 12:19 CRMPicco RFC16 Women's 8.jpg
-rw-rwxr--+ 1 vagrant vagrant  30110 Nov 13 12:19 CRMPicco RFC16 Women's 9.jpg
Run Code Online (Sandbox Code Playgroud)

我正在运行 CentOS 7.0 并安装了重命名。

[vagrant@crmpicco /var/www/crmpicco/web/php/upload/10111/165-190]# which rename
/usr/bin/rename

cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)
Run Code Online (Sandbox Code Playgroud)

但是,以下内容不会为我重命名任何文件。我尝试了在 SuperUser 上看到的许多不同的方法,但它们似乎都不起作用。

[vagrant@crmpicco /var/www/crmpicco/web/php/upload/10111/165-190]# rename s/Women/W/ *.jpg
Run Code Online (Sandbox Code Playgroud)

我在做蠢事吗?

use*_*686 5

事情不是这样的rename。util-linux "rename" 命令只接受两个静态字符串(基本搜索和替换):

rename "Women" "W" *.jpg
Run Code Online (Sandbox Code Playgroud)

对于类似 Perl 的正则表达式语法,您将需要rename.plaka perl-rename. 它不是为 CentOS 打包的,但您可以直接从 CPAN获取它作为File::Rename模块

某些发行版(例如 Debian)会交换名称,因此rename来自 Perl 和rename.ul来自 util-linux,我想这就是混淆的来源。