删除或重命名\ r为文件名的文件


10

我有一个讨厌的小文件,其名称似乎是单个字符,而该字符是 \r

如何删除?

这就是我得到的ls -bl

-rw-rwxr--+   1 root             snapplewriters        0 Aug 29  2011 \r

ls -l 只需显示“?”


您甚至是怎么得到这样的文件的?
mkaito 2012年

Answers:


16

我们ls -li获取文件的索引节点号(第一列),然后使用find将其删除(假设索引节点为12345):

find . -inum 12345 -exec rm -i {} \;


谢谢-这是非常有用的-我觉得必须对文件有某种明确的系统引用,但找不到(无论如何很快)。
科林

1
根据安装的版本find,您也可以执行find . -inum 12345 -delete
William Jackson

对我来说,与版本无关的越多越好。但是仍然有很好的建议。:)
Garrett'4


5

我将亲自接触Python:

>>> import os
>>> '\r' in os.listdir('.')
True
>>> os.unlink('\r')

但是,如果您了解转义字符,也可以从外壳执行此操作。

$ ls -b $'\r'
\r
$ rm -vi $'\r'
rm: remove regular empty file \r’? y
removed \r

我想你的厨房里还有一把大锤吗?以防万一您需要开裂螺母?:-)
mivk

3

<carriage return>如果您使用的是Bash shell,则删除文件的另一种快速方法是:

$ rm <control-v><control-m>

2

单字符文件名不常见,如果目录中没有其他此类文件,则可以尝试以下操作:

rm ?

我懒得学习或查找如何引用奇怪的字符,所以当我被困在名称难懂的文件中时,我已经多次使用这种形式的变体。


-1匹配所有具有单个字符名称的文件-请参见中的“路径名扩展” man bash。试试touch a b c d $'\r'; rm ?
l0b0 2012年

1
@ l0b0:是吗?如我所写,单字符文件名是不寻常的。该目录中很可能没有其他此类文件,在这种情况下,这可行。否则为“ rm -i?” 可以使用。
Thomas Padron-McCarthy 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.