为什么这个bash命令试图将é替换为ee而不是e
$ rename 's/[éè]/e/g' tést
Can't rename tést teest: Aucun fichier ou dossier de ce type我怎么才能让它像我期望的那样工作呢?
发布于 2016-05-25 10:23:52
因为您的终端被设置为UTF-8,但是rename以字节操作。因此,它实际上看到了s/[\303\251\303\250]/e/g,您的字符串t\303\251st包含其中的两个,因此每个字符串都被e替换。
您可以将任何Perl代码添加到表达式中,这样就可以通过use utf8打开正则表达式的utf-8,并通过解码主题变量$_来解码参数。
rename 'use utf8; use Encode; $_ = decode("UTF-8", $_); s/[éè]/e/g' tésthttps://stackoverflow.com/questions/37433550
复制相似问题