如何删除名称为 ''$'\r' 的文件?
How do I delete a file with name ''$'\r'?
由于某些原因,我的一个目录中有一个我无法删除的文件:
$ ls -al
drwxrwxr-x 2 xxx xxx 4096 Oct 10 14:05 ''$'\r'
(more files follow...)
问题是我无法删除它。我尝试使用通配符 rm ''$'\r'
和 ls
来至少查看它匹配的内容,但没有成功。有趣的是,ls -al ?
、ls -al ??
等并没有列出文件。
可能我可以删除整个目录并在之后恢复其他文件,但我认为应该可以 1) 列出正确的文件名,以及 2) 然后使用该名称删除文件。
我觉得还行
rm "''$'\r'"
我终于做到了:
ls -i # find the inode of the file
find . -inum 4350083 -delete
不确定为什么名称没有列在可以输入的表单中。我尝试将它包含在 $'...' 中,但这也没有用。
由于您是 运行 bash 交互,您可以使用文件名完成。文件名中的第一个字符对于 shell 是特殊的,因此您需要对其进行转义。 Bash 应该完成剩下的工作。所以输入:
rm \'
然后按制表符键,bash 应该会为您完成文件名,并进行适当的转义等。然后只需按 Enter 键即可将其删除。
由于某些原因,我的一个目录中有一个我无法删除的文件:
$ ls -al
drwxrwxr-x 2 xxx xxx 4096 Oct 10 14:05 ''$'\r'
(more files follow...)
问题是我无法删除它。我尝试使用通配符 rm ''$'\r'
和 ls
来至少查看它匹配的内容,但没有成功。有趣的是,ls -al ?
、ls -al ??
等并没有列出文件。
可能我可以删除整个目录并在之后恢复其他文件,但我认为应该可以 1) 列出正确的文件名,以及 2) 然后使用该名称删除文件。
我觉得还行
rm "''$'\r'"
我终于做到了:
ls -i # find the inode of the file
find . -inum 4350083 -delete
不确定为什么名称没有列在可以输入的表单中。我尝试将它包含在 $'...' 中,但这也没有用。
由于您是 运行 bash 交互,您可以使用文件名完成。文件名中的第一个字符对于 shell 是特殊的,因此您需要对其进行转义。 Bash 应该完成剩下的工作。所以输入:
rm \'
然后按制表符键,bash 应该会为您完成文件名,并进行适当的转义等。然后只需按 Enter 键即可将其删除。