如何删除名称为“ $'\ r'的文件?

时间:2019-10-14 07:02:42

标签: linux bash special-characters non-ascii-characters rm

由于某些原因,我在一个目录中有一个无法删除的文件:

$ 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)然后使用该名称删除文件。

3 个答案:

答案 0 :(得分:2)

我终于设法做到了:

ls -i # find the inode of the file
find . -inum 4350083 -delete 

不确定为什么未以可输入的形式列出名称。我尝试将其包含在$'...'中,但这也不起作用。

答案 1 :(得分:1)

由于交互式运行bash,因此可以使用文件名补全。文件名中的第一个字符是外壳程序专用的,因此您需要对其进行转义。重击应该做剩下的。所以输入:

rm \'

然后按制表键,bash应该为您完成文件名,并带有适当的转义符等。然后只需按Enter键即可将其删除。

答案 2 :(得分:0)

我认为可以。

rm "''$'\r'"