如何在Linux中删除包含特殊字符的文件?

Ter*_*mos 2 linux

我在 Windows 文本编辑器中创建了一个 linux bash 文件。该文件包含在 linux 下将文件移动到另一个位置的命令。

在我运行这个文件后,我发现目标文件的末尾有“\r”符号。(我猜这是因为linux和windows使用不同的行尾符号)

所以'Dir'命令显示我有这样的文件:“httpd.conf\r”而'ls'显示的文件名与:“httpd.conf?”

我如何删除这些文件?

这些命令不起作用:

Rm httpd.conf\r
Rm httpd.conf\\r
rm 'httpd.conf\r'
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

rm: 不能 lstat `httpd.confr': 没有那个文件或目录

jll*_*gre 5

更简单的方法是:

rm -i httpd.conf?
Run Code Online (Sandbox Code Playgroud)


Sma*_*ger 5

如果你得到一个非常难懂的文件名,你可以通过 inode: 运行ls -il来获取 inode 编号来删除它,然后使用: find -inum <inode number> -exec rm -i {} \;来删除它。

(这归功于我的旧书签之一:http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html