在 Debian 中删除名称中带有问号(另一种编码)的文件

在 Debian 中删除名称中带有问号(另一种编码)的文件

我的目录中有一个文件,其名称与此类似?????????????????????? ???????????????????????? ??????????.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 的使用,您可以阅读手册页或者在网上搜索一些教程

相关内容