我在Windows文本编辑器中创build了一个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':没有这样的文件或目录
更简单的方法是:
rm -i httpd.conf?
如果你得到一个非常耐用的文件名,你可以通过inode删除它:run ls -il得到inode号,然后使用: find -inum <inode number> -exec rm -i {} \; 删除它。
(感谢我的旧书签之一: http : //www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html )
如果你正在使用bash和bash的tab完成function,你可以使用它来完成文件名,并且有问题的字符会自动转义。
假设你在同一个目录下有两个文件: 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”开头的所有其他文件 。
你可以做:
rm $'httpd.conf\r'
要么
rm 'httpd.conf^M'
按Ctrl – v然后按Ctrl – m获得^M