无法删除文件名含有特殊字符的文件

无法删除文件名含有特殊字符的文件

我使用 Ubuntu 9.10(Karmic),我有一个包含许多文件的目录,其中包括这两个文件:

./baer.jpg
./bär.jpg

我想删除bär.jpg但我不能。

如果我输入rm b并点击TAB,它会显示两个文件,如果我附加ä并点击TAB,则不会显示任何内容。

为了删除,必须做什么bär.jpg

删除父文件夹对我来说不是一个解决方案,因为此目录中有大量文件被生产环境使用。

答案1

我刚刚发现了如何删除带有特殊字符的文件:

  1. cd <directory with that file>

  2. ls -ali

  3. 在目录列表的最左侧,您可以看到每个文件的 inode 的 ID。

  4. 通过 inode ID 删除文件:

    find . -inum <inode ID of your file> -exec rm -i {} \;

这对我的问题很有效。希望这对你有帮助!

答案2

你可以使用bash 通配符

 rm b?r.jpg

其中?代表一个字符。另一种选择(如果两个文件名的长度相同)是

rm b[!e]r.jpg

其中[!e]表示除“e”之外的任意字符。

答案3

grep好吧,如果这是一个有问题的文件,您可以尝试使用匹配的方法来删除该文件。

neal@dsadsa:~$ touch junk_ä_deleteme
neal@dsadsa:~$ ls | grep junk | grep deleteme | xargs rm

这里,我创建了一个名为 的文件junk_ä_deleteme。然后我通过匹配搞笑符号之前(“junk”)和之后(“deleteme”)的字符来删除它。这种方法不太好,但如果是单个文件,它可能会起作用。

也许更好的解决方案是形成一个正则表达式来匹配您的文件,然后将该文件名传送到rm

相关内容