由于某些原因,我在一个目录中有一个无法删除的文件:
$ 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)然后使用该名称删除文件。
答案 0 :(得分:2)
我终于设法做到了:
ls -i # find the inode of the file
find . -inum 4350083 -delete
不确定为什么未以可输入的形式列出名称。我尝试将其包含在$'...'中,但这也不起作用。
答案 1 :(得分:1)
由于交互式运行bash,因此可以使用文件名补全。文件名中的第一个字符是外壳程序专用的,因此您需要对其进行转义。重击应该做剩下的。所以输入:
rm \'
然后按制表键,bash应该为您完成文件名,并带有适当的转义符等。然后只需按Enter键即可将其删除。
答案 2 :(得分:0)
我认为可以。
rm "''$'\r'"