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

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

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

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

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

删除bär.jpg必须做些什么?

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

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

  1. cd
  2. ls -ali
  3. 在目录列表的最左侧,您可以看到每个文件的inode的ID。
  4. 通过inode ID删除您的文件:

    find . -inum -exec rm -i {} \;

这对我的问题很好。 希望这可以帮助!

你可以使用bash通配符

  rm b?r.jpg 

哪里? 代表一个字符。 另一种方法(如果两个文件名都是相同的长度)将是

 rm b[!e]r.jpg 

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

好吧,你可以尝试使用匹配的grep来删除文件,如果它是一个有问题的文件。

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

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

也许更好的解决方案是形成匹配文件的正则表达式,然后将该文件名传递给rm