linux运维 - linux下 怎样删除文件名中包含特殊字符的文件
PHP中文网
PHP中文网 2017-04-17 13:39:48
0
2
790

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

[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中文网

认证0级讲师

reply all(2)
伊谢尔伦

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 ./--
Peter_Zhu

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

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template