我以某种方式创建了一个文件,但我似乎无法弄清楚如何通过 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
两个建议:
运行
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 {} \;
,这将交互式提示您删除该文件。
- 运行
rm -i ? ?? ???
以使 shell 扩展为当前目录中的一字符、二字符和三字符文件名;其中一个将显示为空白,并且可能是有问题的文件;只需对提示回答“否”即可删除要保留的文件。
答案2
我尝试创建一个与您同名的文件,每次都可以用 rm 将其删除。你知道你安装的是哪个版本的rm吗?也许您的版本有问题?我假设您尝试简单地将名称放在双引号内。如果没有,请尝试一下。
如果不起作用,我建议您尝试使用 rm 和一些通配符。将所有其他文件移出该文件夹,然后运行以下命令。
rm -f "*"
这只让我失败了一次,当时文件系统本身已损坏,并且 fsck 没有触及它。老实说,我只是将文件留在那里,直到下次重新格式化它。