删除名称损坏的文件

删除名称损坏的文件

我以某种方式创建了一个文件,但我似乎无法弄清楚如何通过 CLI 删除该文件。

$ ls -alF
total 8195
-rw-r--r--+ 1 me             my_group           0 Jul 19 14:10 ''$'\r'
drwxrwx---+ 1 system         system             0 Nov 17 14:58  ./
drwxr-xr-x+ 1 system         system             0 Jul 17 15:40  ../
...

这里的第一行项目我似乎找不到能够删除的正确转义序列。

尝试 grep 该条目甚至无法正常工作:

$ ls -alF | head -n2
total 8195
-rw-r--r--+ 1 me             my_group           0 Jul 19 14:10

请注意,当 grep/ 使用其他管道命令时,我永远看不到文件的名称。

这是一个 Cygwin 封装的 Win10 环境

答案1

两个建议:

  1. 运行ls -li以获取 inode,然后使用find将其删除。

    ls -li foo
    42 -rw-r--r--. 1 user group 0 Nov 17 15:07 foo
    

如果 inode 为 42(如上例所示),请运行:find . -inum 42 -exec rm -i {} \;,这将交互式提示您删除该文件。

  1. 运行rm -i ? ?? ???以使 shell 扩展为当前目录中的一字符、二字符和三字符文件名;其中一个将显示为空白,并且可能是有问题的文件;只需对提示回答“否”即可删除要保留的文件。

答案2

我尝试创建一个与您同名的文件,每次都可以用 rm 将其删除。你知道你安装的是哪个版本的rm吗?也许您的版本有问题?我假设您尝试简单地将名称放在双引号内。如果没有,请尝试一下。

如果不起作用,我建议您尝试使用 rm 和一些通配符。将所有其他文件移出该文件夹,然后运行以下命令。

rm -f "*"

这只让我失败了一次,当时文件系统本身已损坏,并且 fsck 没有触及它。老实说,我只是将文件留在那里,直到下次重新格式化它。

相关内容