无法删除文件名中包含特殊字符的文件
我使用Ubuntu 9.10(Karmic),我有一个包含许多文件的目录,其中包括这两个文件:
./baer.jpg ./bär.jpg
我想删除bär.jpg
但我不能。
如果我输入rm b
并点击TAB
,它会显示两个文件,如果我追加ä
并点击TAB
,则不会显示任何内容。
删除bär.jpg
必须做些什么?
删除父文件夹对我来说不是一个解决方案,因为此目录中有大量文件供生产环境使用。
我刚刚发现了如何删除这些特殊字符的文件:
-
cd
-
ls -ali
- 在目录列表的最左侧,您可以看到每个文件的inode的ID。
-
通过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
。