【问题标题】:Avoid non standard ASCII characters in rename command在重命名命令中避免使用非标准 ASCII 字符
【发布时间】: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


【解决方案1】:

您的问题有点分散,但我认为您的意思是:

for i in $(echo * | sed 's, YOUR_REG_EGP ,,g'); do
  # your rename commmands on $i
done

【讨论】:

  • 我会尽量减少气 :-) 这是否意味着我会使用: for i in $(echo * | sed 's/(?
猜你喜欢
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 2019-12-08
  • 2017-10-24
  • 2020-12-29
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
相关资源
最近更新 更多