我的目录中有一个文件,其名称与此类似?????????????????????? ???????????????????????? ??????????.png
。在我看来,该文件是在 Windows 下创建的,名称为俄语。我用 git 提取了它,现在我无法编译我的程序。我无法在 Debian 中删除它。
rm: cannot remove `??????????????????????': No such file or directory
rm: cannot remove `????????????????????????': No such file or directory
rm: cannot remove `??????????.png': No such file or directory
我尝试在文件名周围使用引号,但是不起作用。
应该如何删除具有此类名称的文件?
答案1
只需使用rm -i <wildcard>
...
(py26_dfl)[mpenning@Bucksnort ~]$ rm -i *ng
rm: remove regular file `IMAG0004-1.png'? n
rm: remove regular file `??????????.png'? y
(py26_dfl)[mpenning@Bucksnort ~]$
答案2
通配符的使用,如另一个答案,通常是从目录中选择文件子集的更快方法,但并不总是可以使用它(例如在前一种情况下,至少你有扩展名后缀可理解的字符)。
rm -i *ng # means remove all files that finish for ng
另一种方法是使用索引节点文件编号。
使用ls -i
你将获得当前目录中的文件列表,其中包含索引节点号紧随文件名之后。下面是一个例子,它只ls -i1
显示了每行一个文件的输出:
14549004 Various_Command_.sh
14549512 Convert_Scan_Png_To_Jpg.sh
14579439 FILE_TO_DELETE
之后,您可以删除、移动或执行任何您想要的命令,通过文件选择其索引节点号。例如:到remove
文件FILE_TO_DELETE
索引节点号14579439 可以写:
find . -inum 14579439 -exec rm -i {} \;
注意:remove 命令后面的选项-i
用于强制系统在每次删除前提示。
有关 find 的使用,您可以阅读手册页或者在网上搜索一些教程。