我在 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'
我收到以下错误:
rm: 无法 lstat `httpd.confr':没有此文件或目录
答案1
更简单的方法是:
rm -i httpd.conf?
答案2
如果您获得了一个非常难懂的文件名,您可以通过 inode 删除它:运行ls -il
以获取 inode 编号,然后使用:
find -inum <inode number> -exec rm -i {} \;
删除它。
(此内容来源于我的一张旧书签:http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html)
答案3
如果您正在使用 bash,并且 bash 的制表符补全功能已启用,则可以使用它来补全文件名,并自动转义相关字符。
答案4
假设同一目录中有两个文件:httpd.conf
和httpd.conf\r
。
复制您要保留的文件:
$ sudo cp httpd.conf httpd-keep.conf
只需删除全部以httpd.conf开头的文件:
$ sudo rm httpd.conf*
恢复原始文件:
$ sudo mv httpd-keep.conf httpd.conf
你需要备份所有其他文件rm
在执行如上所示的命令之前,如果有以“httpd.conf”开头的内容。