即我有一个名为Porträt.pdf的文件。
但是文件名是使用在 ubuntu 中无法正确显示的字符集创建的,如下例所示。
当您有多个文件名,并且由于它在终端命令中的编码而无法使用这个特殊字符时,重命名文件名中的此类字符的最佳做法是什么?
答案1
理论上,了解文件使用的字符编码可能很棘手,但大多数情况下,错误来自 Windows 系统和程序仍然只使用 Latin1 而不是 UTF-8。在convmv -f cp850 -t utf-8 *
包含损坏文件的文件夹中运行不带引号的程序并尝试一下。
(您需要convmv
安装包)
答案2
如果您只想删除一些字符,您可以尝试这个:
rename "s/[^A-Za-z0-9-_]/_/g"
这会将除字符、数字或破折号之外的所有字符替换为下划线。使用选项运行-n
以查看试运行中发生的情况。
答案3
我猜想现代操作系统通常选择 UTF-8 来编码文件名。从这个意义上说,文件名中包含非美国字符不是问题。您所遇到的情况可能是使用非 UTF-8 编码创建的文件名的结果。很难说您可以用它做什么,这也取决于您想要什么。如果您需要正确的文件名(例如“Porträt.pdf”),您需要先知道原始文件名的编码,然后才能转换它/它们。由于存在大量非常不同的编码,因此“猜测”并不容易。