我的目录中大约有 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
我正在运行 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)
但是下面的方法无法为我重命名任何文件。我尝试了 SuperUser 上看到的许多不同方法,但似乎都不起作用。
[vagrant@crmpicco /var/www/crmpicco/web/php/upload/10111/165-190]# rename s/Women/W/ *.jpg
我是不是在做一些愚蠢的事情?
答案1
这不是rename
工作原理。util-linux“rename”命令仅接受两个静态字符串(基本搜索和替换):
rename "Women" "W" *.jpg
对于类似 Perl 的正则表达式语法,你需要rename.pl
又名perl-rename
。它没有为 CentOS 打包,但你可以获取它直接从 CPAN作为File::Rename
模块
某些发行版例如 Debian 会交换名称,所以这rename
是来自 Perl 和rename.ul
来自 util-linux,我猜这就是混淆的来源。