我的主目录中有这两个文件无法删除:-
-rw-rw-r-- 1 steve steve 20551 Jan 27 23:51 \home\steve?esult_picture.png
-rw-rw-r-- 1 steve steve 22238 Jan 27 23:54 \home\steve?esult.png
错误信息如下:-
rm: cannot remove 'homesteve?esult_picture.png': No such file or directory
rm: cannot remove 'homesteve?esult.png': No such file or directory
chmod 给出了非常相似的错误
touch '\home\steve?esult_picture.png'
sudo rm -f '\home\steve?esult_picture.png'
touch '\home\steve?esult.png'
sudo rm -f '\home\steve?esult.png'
也不会删除它们。
我确信它们是使用 Python 脚本错误创建的。
使用 Windows 资源管理器查看 smb 共享,它们被称为 _1UPF8~X.PNG 和 _UYBX6~Q.PNG,并且可以像预期的那样以图片形式查看。但由于缺乏适当的权限,我无法对它们进行任何其他操作。
知道如何去除它们吗?
史蒂夫
答案1
显示的问号ls
可能不是文件名中的真正问号,而是一个不可打印的字符。尝试使用ls -b
来打印这些不可打印的字符作为其 C 样式转义符;例如 \t 表示制表符。
您也可以简单地尝试,rm \home\steve?esult.png
因为问号将匹配一个字符(无论该字符是什么)。但是,反斜杠需要加倍,因为它现在试图为下一个字符分配特殊含义。
因此这应该可行:
rm -f \\home\\steve?esult_picture.png
rm -f \\home\\steve?esult.png
另外,这也可能有用:
rm -fi *png
或者,如果目录中有很多文件:
rm -fi *home*steve*esult*.png
-i
每次删除之前提示的方法;仅对要y
删除的文件做出响应。
答案2
您需要使用双引号来删除它们:
rm -f "\home\steve?esult_picture.png"
rm -f "\home\steve?esult.png"
反斜杠是转义字符,表示后面的字符有特殊含义。双引号表示它们是文件名的一部分,允许您使用命令删除文件rm
。
答案3
掌握该rm
命令以便能够将其用于任何类型的奇怪文件名(例如以 开头的文件名-
)是很好的,您可以从这里的其他答案中学习如何做到这一点。
还有另一种解决方案,在许多其他情况下可能会有所帮助。安装名为mc
aka 的工具午夜指挥官。它是在终端中运行的文件浏览器,因此您可以列出文件,突出显示要操作的文件,然后单击F8删除它。名称中包含的任何字符。
答案4
感谢您的回复,我已经设法使用远程桌面并选择必须刚刚整理出奇怪字符的文件来摆脱它们。