【发布时间】:2018-12-08 15:24:45
【问题描述】:
我正在使用此命令来查找和重命名目录中具有非大写文件名的文件(为了安全起见,我留下了-n 标志,以防有人从这里复制和粘贴):
rename -n 's/(?<![.'\''])\b\w*/\u$&/g' *
问题在于它会找到包含非标准 ASCII 字符(例如 Noël)的文件,并将其视为需要修复的问题。
有什么办法可以避免这种情况发生吗?
编辑(20180701-1635):
我刚刚意识到,如果文件名也包含破折号或撇号(它将后面的字符更改为大写),该命令也会“失败”(尝试重命名)。当前错误重命名示例:
艾伦的文件名.txt > 艾伦的文件名.txt
文件名.txt > 文件名.txt
【问题讨论】:
-
你能把
\w换成[[:alpha:]]吗? -
rename != rename。我的意思是有不同版本的rename命令可用,都带有一组不同的选项和功能。有些根本不支持正则表达式。您使用的是哪个版本的重命名? -
@Benjamin W:我试过这个(完全如图所示),但周围没有 :
它仍然想将 Noël 重命名为 NoëL(即它想用大写的 'el' 替换法语 'ë' 之后的小写 'el') .艾伦。 -
@hek2mgl: /usr/bin/rename using File::Rename version 0.20
标签: ascii rename file-rename non-ascii-characters