![删除或重命名以 \r 为文件名的文件](https://linux22.com/image/1310139/%E5%88%A0%E9%99%A4%E6%88%96%E9%87%8D%E5%91%BD%E5%90%8D%E4%BB%A5%20%5Cr%20%E4%B8%BA%E6%96%87%E4%BB%B6%E5%90%8D%E7%9A%84%E6%96%87%E4%BB%B6.png)
我有一个讨厌的小文件,它的名字似乎只有一个字符,而这个字符是一个\r
我怎样才能删除它?
这是我得到的ls -bl
:
-rw-rwxr--+ 1 root snapplewriters 0 Aug 29 2011 \r
ls -l
只显示“?”
答案1
我们ls -li
获取文件的 inode 编号(第一列),然后用find
它来删除它(假设 inode 为 12345):
find . -inum 12345 -exec rm -i {} \;
答案2
使用 ANSI-C 引用:rm $'\r'
http://www.gnu.org/software/bash/manual/bashref.html#ANSI_002dC-Quoting
答案3
我个人会选择 Python:
>>> import os
>>> '\r' in os.listdir('.')
True
>>> os.unlink('\r')
但是如果您了解转义字符,您也可以从 shell 中执行此操作。
$ ls -b $'\r'
\r
$ rm -vi $'\r'
rm: remove regular empty file ‘\r’? y
removed ‘\r’
答案4
单字符文件名并不常见,如果您的目录中没有其他此类文件,您可以尝试以下操作:
rm ?
我懒得学习或查找如何引用奇怪的字符,因此当我遇到名称困难的文件时,我多次使用过这种方法的变体。