无法删除带有’?’的文件 在文件名中

无法删除带有’?’的文件 在文件名中,它无法删除“文件不存在”的消息。

我试过通过终端使用

rm -f ./pathtofile\?.mkv 

但尽管没有失败消息,该文件仍然存在。 有什么建议?

? 很可能是终端程序无法显示的另一个非ASCII符号,因此显示? 。 这很容易certificate – 你可以执行touch ?.mkvrm ?.mkv – 这两个命令执行得很好。

使用GUI文件管理器可以轻松删除这样的文件。

或者,您可以尝试使用通配符。 如果命令:

 ls pathtofile\FewLetters*.mkv 

列出您可以安全运行的单个文件:

 rm pathtofile\FewLetters*.mkv`. 

最后,您可以尝试更难但更可靠的方法,如上面的Android Dev所指出的那样, 无法删除文件名中包含特殊字符的文件 。

文件真的有? 在文件名中,或者它是一个非打印字符, ls显示为?

 $ touch $'a\ab' 'a?b' $ ls a?ba?b 

一个文件名称中包含ASCII BELL字符,另一个文件具有普通旧问号。

较新版本的ls默认情况下会以更清晰的forms显示特殊字符:

 $ touch $'b\aa' $ ls 'b'$'\a''a' 

ls -qls -q旧版本默认显示非打印字符的方式。 所以,如果您只是在任何当前版本的Ubuntu中使用ls ,那么您可能只会看到问号。

请尝试以下其中一项:

 $ ls -b a?ba\ab $ printf "%q\n" * a\?b $'a\ab' 

如果其中任何一个的输出没有问号,则文件名没有问号。

您可以使用printf的输出进行删除:

 rm a\?b rm $'a\ab' 

或依赖标签完成:

 $ rm a a?ba^Gb 

如果显示^G ,则按Ctrl V ,然后按Ctrl G输入。 或者告诉bash循环选项卡完成 :

 $ bind tab:menu-complete $ rm a $ rm a\?b $ rm a^Gb 

在任何一种情况下,使用rm a?b 都可以工作,但是很危险。 它将匹配所有a开头的文件名,以b结尾并在其间有一个字符:

 $ touch acb; printf "%q\n" a?b a\?b $'a\ab' acb 

所以,如果你做rm a?b (或更糟, rm a*b ),你最终可能会删除你不想要的文件。

rm -f 'path?.mkv'适合我。 如果我错了,请纠正我,但' '会禁用某些特殊字符的function,例如? 。 抱歉格式不好,速度快了得快点。
希望它有所帮助,祝你有个美好的一天=)