无法删除带有’?’的文件 在文件名中
无法删除带有’?’的文件 在文件名中,它无法删除“文件不存在”的消息。
我试过通过终端使用
rm -f ./pathtofile\?.mkv
但尽管没有失败消息,该文件仍然存在。 有什么建议?
的?
很可能是终端程序无法显示的另一个非ASCII符号,因此显示?
。 这很容易certificate – 你可以执行touch ?.mkv
和rm ?.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 -q
是ls -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,例如?
。 抱歉格式不好,速度快了得快点。
希望它有所帮助,祝你有个美好的一天=)