为了账号安全,请及时绑定邮箱和手机立即绑定

如何删除以双连字符开头的文件?

如何删除以双连字符开头的文件?

www说 2019-11-02 10:26:23
我的Unix机器上有一些以 --例如 --testings.html如果我尝试将其删除,则会出现以下错误:cb0$ rm --testings.htmlrm: illegal option -- -usage: rm [-f | -i] [-dPRrvW] file ...       unlink file我试过了rm "--testings.html" || rm '--testings.html' 但没有任何效果。如何在终端上删除此类文件?
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

rm -- --somefile

在这种情况下,这是一种依靠rm使用getopts解析其选项的解决方案。那里有一些应用程序自己进行解析,并且也会对此进行呕吐(因为它们可能不一定实现“ --选项的均值”逻辑)。


因此,您应该开车穿过头骨的解决方案是:


rm ./--somefile

它将始终有效,因为这样您的参数就不会以开头-。


而且,如果您要制作真正体面的Shell脚本,请参阅。从技术上讲,您应该将./所有文件名参数扩展放在最前面,以防止脚本由于文件名输入的时髦而损坏(或防止脚本被滥用/利用来执行不应做的事情:例如,rm将删除文件但会跳过目录;同时rm -rf *会删除所有内容。将“ -rf” 文件名传递给脚本或某人touch ~victim/-rf的ing可能会以这种方式用于更改其行为,从而带来非常严重的后果。


查看完整回答
反对 回复 2019-11-02
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

对于删除文件名中包含不可能字符的文件的更通用方法,一种选择是使用文件的inode。


可以通过获取ls -i。


例如


$ ls -lai | grep -i test

452998712 -rw-r--r--  1 dim   dim      6 2009-05-22 21:50 --testings.html

并在find的帮助下擦除它:


$ find ./ -inum 452998712 -exec rm \{\} \;

当处理大量具有文件名特性的文件时,此过程可能会很有用,因为它很容易编写脚本。


查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 740 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信