Linux 如何在整个文件系统中更改文件名中的单个字母?
我有数百个文件的文件名中带有特殊字符(“æ”、“ø”和“å”) 如果不重命名,我无法将这些文件复制到外部mntfs磁盘 这些文件位于几十个不同的文件夹中。还有成千上万的其他文件也没有这些信件 我想用占位符('ae'、'oe'和'aa')替换特殊字符,同时保持文件名的其余部分不变Linux 如何在整个文件系统中更改文件名中的单个字母?,linux,file-io,command-line,filesystems,Linux,File Io,Command Line,Filesystems,我有数百个文件的文件名中带有特殊字符(“æ”、“ø”和“å”) 如果不重命名,我无法将这些文件复制到外部mntfs磁盘 这些文件位于几十个不同的文件夹中。还有成千上万的其他文件也没有这些信件 我想用占位符('ae'、'oe'和'aa')替换特殊字符,同时保持文件名的其余部分不变 我在ubuntu上。我正在考虑使用grep、sed和tr,但我不知道具体如何使用。您可以使用util linux包中的rename命令。 比如说, find / -type f -exec rename 'â' 'a'
我在ubuntu上。我正在考虑使用grep、sed和tr,但我不知道具体如何使用。您可以使用util linux包中的
rename
命令。
比如说,
find / -type f -exec rename 'â' 'a' {} \;
用于在编码之间转换文件名。我相信它可以解决您的问题,即使它可能不完全是您所要求的。在这里,
find
实用程序可能会非常有用。您可以递归地在根目录中找到包含特殊字符的所有文件,然后相应地应用替换规则。它们很常见,尤其是在丹麦语中。它们不能用ASCII编码。rename无法处理特殊字符。这是因为这不是使用rename
的方式。它应该是:find/-typef-exec-rename's/ä/ae/'{}\代码>不同的发行版具有不同的rename
s。有些人使用util linux
中的rename
,而其他人(我认为基于Debian)使用基于Perl的rename
。ubuntu是基于Debian的,默认情况下使用基于Perl的rename