Home  >  Q&A  >  body text

linux运维 - linux下 怎样删除文件名中包含特殊字符的文件

目录中无意间出现了 -- 这个文件

[root@dev tmp]# ls
--  00  01  02  03  04  05  06  07  08  09

[root@dev tmp]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 23 15:31 --
-rw-r--r-- 1 root root 0 Oct 23 15:37 00
-rw-r--r-- 1 root root 0 Oct 23 15:37 01
-rw-r--r-- 1 root root 0 Oct 23 15:37 02
-rw-r--r-- 1 root root 0 Oct 23 15:37 03
-rw-r--r-- 1 root root 0 Oct 23 15:37 04
-rw-r--r-- 1 root root 0 Oct 23 15:37 05
-rw-r--r-- 1 root root 0 Oct 23 15:37 06
-rw-r--r-- 1 root root 0 Oct 23 15:37 07
-rw-r--r-- 1 root root 0 Oct 23 15:37 08
-rw-r--r-- 1 root root 0 Oct 23 15:37 09

怎么删都无法删除

[root@dev tmp]# rm -rf * 
[root@dev tmp]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 23 15:31 --

甚至是rm -rf

[root@dev tmp]# rm -rf \-\- && ll
total 0
-rw-r--r-- 1 root root 0 Oct 23 15:31 --
[root@dev tmp]# rm -rf \\-\\- && ll
total 0
-rw-r--r-- 1 root root 0 Oct 23 15:31 --
[root@dev tmp]# mv --  xx
mv: missing destination file operand after `xx'
Try `mv --help' for more information.
[root@dev tmp]# mv \-\- xx
mv: missing destination file operand after `xx'
Try `mv --help' for more information.

为什么这样的字符无法删掉、rm命令是怎么处理的?

PHP中文网PHP中文网2742 days ago766

reply all(2)I'll reply

  • 伊谢尔伦

    伊谢尔伦2017-04-17 13:41:48

    You can read the manual

    [root@cc tmp]# rm --help
    
    To remove a file whose name starts with a `-', for example `-foo',
    use one of these commands:
      rm -- -foo
    
      rm ./-foo
    
    Note that if you use rm to remove a file, it is usually possible to recover
    the contents of that file.  If you want more assurance that the contents are
    truly unrecoverable, consider using shred.
    

    So there are two ways to delete it

    Add -- or ./ to delete it

    [root@cc tmp]# rm -rf -- --
    [root@cc tmp]# rm -rf ./--

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-17 13:41:48

    rm -rf -- --

    --For most commands, it is used to mark the end of the command's own parameters

    For example

    $ echo a > test
    $ cat -n test
         1    a
    $ cat -n -- test
         1    a
    $ cat -- -n test
    cat: -n: 没有那个文件或目录
    a

    -- The former are the configuration parameters of the command itself, and the latter are the parameters such as files and objects that the command will act on

    When you write only one --, it will be used as a separator. If you write it twice, the first one will be used as a separator, and the second one will be used as a command parameter

    reply
    0
  • Cancelreply