![如何删除以“>”或其他不寻常字符开头的文件](https://linux22.com/image/72905/%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%E4%BB%A5%E2%80%9C%3E%E2%80%9D%E6%88%96%E5%85%B6%E4%BB%96%E4%B8%8D%E5%AF%BB%E5%B8%B8%E5%AD%97%E7%AC%A6%E5%BC%80%E5%A4%B4%E7%9A%84%E6%96%87%E4%BB%B6.png)
我不小心创建了一个名为
> option[value='2016']
我怎样才能删除它?
My attempts:
$ rm "> option[value='2016']"
rm: cannot remove ‘> option[value='2016']’: No such file or directory
$ rm \> o*
rm: cannot remove ‘>’: No such file or directory
rm: cannot remove ‘o*’: No such file or directory
$ rm `> o*`
rm: missing operand
Try 'rm --help' for more information.
$ rm \> option*
rm: cannot remove ‘>’: No such file or directory
rm: cannot remove ‘option*’: No such file or directory
$ rm '\> option*'
rm: cannot remove ‘\\> option*’: No such file or directory
$
$ rm "\> option*"
rm: cannot remove ‘\\> option*’: No such file or directory
文件清单:
HAPPY_PLUS_OPTIONS/
o*
op*
> option[value='2016']
> option[value='ALFA ROMEO']
README.md
rspec_conversions/
.rubocop.yml
SAD/
SAD_PLUS_OPTIONS/
答案1
另外一个选择
ls -i
给出(具有适当的 inode 值)
5233 > option[value='2016'] 5689 foo
然后
find . -inum 5233 -delete
可选(预览)
find . -inum 5233 -print
-xdev
如果下面有另一个文件系统,您还可以添加。
答案2
您还可以使用“--”选项,根据 man:
The rm command uses getopt(3) to parse its arguments, which allows it to
accept the `--' option which will cause it to stop processing flag options at
that point. This will allow the removal of file names that begin with a dash
(`-'). For example:
rm -- -filename
所以我尝试:
touch -- "> option[value='2016']"
并删除它:
rm -- "> option[value='2016']"
检查文件名是否正确输入的最简单方法:
rm -- ">[tab]
并让自动完成功能完成该工作。
PS:尽管听起来很诱人,但不要创建文件名“-rf *”。可能会发生不好的事情。
-rw-r--r-- 1 stephan staff 0 Sep 13 14:11 -rf *
为了安全起见,请始终使用“-i”。
iMac:~ stephan$ rm -i -- "-rf *"
remove -rf *? Y
答案3
最初的问题是前导空格,因此
rm " > option[value='2016']"
^ here
作品。
将问题更新为有关以 > 等开头的文件。
答案4
因为rm
并没有什么神奇之处>
。您只需要确保尖括号到达它(=防止 shell 将其解释为重定向)。
> "> option[value='2016']" #create it
rm "> option[value='2016']" #remove it
#remove all files in the current directory that have > in them
rm -- {,.}*\>*
如果您使用的是明智的现代系统,您应该能够通过制表符补全获得正确转义的名称。