Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在整个文件系统中更改文件名中的单个字母?_Linux_File Io_Command Line_Filesystems - Fatal编程技术网

Linux 如何在整个文件系统中更改文件名中的单个字母?

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'

我有数百个文件的文件名中带有特殊字符(“æ”、“ø”和“å”)

如果不重命名,我无法将这些文件复制到外部mntfs磁盘

这些文件位于几十个不同的文件夹中。还有成千上万的其他文件也没有这些信件

我想用占位符('ae'、'oe'和'aa')替换特殊字符,同时保持文件名的其余部分不变


我在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