【发布时间】:2020-03-23 09:33:11
【问题描述】:
需要一些指导如何解决这个问题。在编码搞砸的多个子文件夹中拥有 10 000 个文件。通过 ls 命令,我看到一个名为 'F'$'\366''ljesedel.pdf' 的文件名,其中包括开头和结尾的 '。这只是瑞典字符 åäö 出错的一个例子,在这个例子中应该是“Följesedel.pdf”。如果我跑 #>找到。 然后我看到这样的文件列表: ./F?ljesedel.pdf
编码不一样。到底怎么解决这个问题?最明显的方法:
myvar='$'\366''
char="ö"
find . -name *$myvar* -exec rename 's/$myvar/ö' {} \;
和其他可能的方式失败,因为 找 。 -name 找不到它,因为 ?而不是“真实”字符“'$'\366''”
任何建议或指导将不胜感激。
【问题讨论】:
-
\366 对于 \x{F6} 或 ö 是八进制。最好运行一个 Perl 脚本来将一些逻辑放入其中。比如
s/'\$'\\([0-3][0-7]{2})''/func($1)/eg然后在func中,将八进制文本转换成字符返回(替换)。 -
///e的形式是 eval()。 -
最后我自己解决了。重命名命令不行,重要的是找出文件的编码然后运行:find ./ -execdir convmv -fiso-8859-1 -tutf8 {} \;当确定它工作时,只需添加 --notes
标签: regex bash perl rename batch-rename