在Bash中如何转义转义字符以删除特殊名称文件?
特殊转义字符文件名删除方案
方法1:通过Inode号删除(最稳妥,无需处理转义)
这是最推荐的方案,完全避开特殊字符解析问题:
- 首先执行
ls -i,输出会在每行最左侧显示对应文件的Inode编号,找到你要删除的转义字符文件对应的Inode号,假设查询到的Inode号为123456 - 执行以下命令删除即可:
若你的环境不支持find . -inum 123456 -delete-delete参数,可替换为:
执行时确认删除目标文件即可。find . -inum 123456 -exec rm -i {} \;
方法2:直接转义文件名删除
如果你明确文件名是两个ASCII转义符,可直接用ANSI-C转义语法指定文件名,同时加--避免rm把文件名识别为命令参数:
- 先执行以下命令确认匹配的是目标文件:
ls -l -- $'\033\033' - 确认无误后执行删除:
rm -- $'\033\033'
方法3:交互式删除(适合当前目录文件少的场景)
执行交互式删除命令,逐个确认是否删除文件,遇到目标文件时输入y即可,其他文件输入n跳过:
rm -i -- *
注意:执行删除操作前建议先备份目录内重要文件,避免误删。
内容的提问来源于stack exchange,提问作者llesh
相关产品推荐
相关产品推荐

