1 | rm
|
2 | ===
|
3 |
|
4 | 用于删除给定的文件和目录
|
5 |
|
6 | ## 补充说明
|
7 |
|
8 | **rm** **命令** 可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
|
9 |
|
10 | 注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
|
11 |
|
12 | ### 语法
|
13 |
|
14 | ```shell
|
15 | rm (选项)(参数)
|
16 | ```
|
17 |
|
18 | ### 选项
|
19 |
|
20 | ```shell
|
21 | -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
|
22 | -f:强制删除文件或目录;
|
23 | -i:删除已有文件或目录之前先询问用户;
|
24 | -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
|
25 | --preserve-root:不对根目录进行递归操作;
|
26 | -v:显示指令的详细执行过程。
|
27 | ```
|
28 |
|
29 | ### 参数
|
30 |
|
31 | 文件:指定被删除的文件列表,如果参数中含有目录,则必须加上`-r`或者`-R`选项。
|
32 |
|
33 | ### 实例
|
34 |
|
35 | 交互式删除当前目录下的文件test和example
|
36 |
|
37 | ```shell
|
38 | rm -i test example
|
39 | Remove test ?n(不删除文件test)
|
40 | Remove example ?y(删除文件example)
|
41 | ```
|
42 |
|
43 | 删除当前目录下除隐含文件外的所有文件和子目录
|
44 |
|
45 | ```shell
|
46 | # rm -r *
|
47 | ```
|
48 |
|
49 | 应注意,这样做是非常危险的!
|
50 |
|
51 | **删除当前目录下的 package-lock.json 文件**
|
52 |
|
53 | ```shell
|
54 | find . -name "package-lock.json" -exec rm -rf {} \;
|
55 | ```
|
56 |
|
57 | **查找 *.html 结尾的文件并删除**
|
58 |
|
59 | ```shell
|
60 | find ./docs -name "*.html" -exec rm -rf {} \;
|
61 | ```
|
62 |
|
63 | **删除当前项目下 *.html 结尾的文件**
|
64 |
|
65 | ```shell
|
66 | rm -rf *.html
|
67 | ```
|
68 |
|
69 | **删除当前目录下的 node_modules 目录**
|
70 |
|
71 | ```shell
|
72 | find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +
|
73 | ```
|
74 |
|
75 | **删除文件**
|
76 |
|
77 | ```shell
|
78 | # rm 文件1 文件2 ...
|
79 | rm testfile.txt
|
80 | ```
|
81 |
|
82 | **删除目录**
|
83 |
|
84 | > rm -r [目录名称]
|
85 | > -r 表示递归地删除目录下的所有文件和目录。
|
86 | > -f 表示强制删除
|
87 |
|
88 | ```shell
|
89 | rm -rf testdir
|
90 | rm -r testdir
|
91 | ```
|
92 |
|
93 | **删除操作前有确认提示**
|
94 |
|
95 | > rm -i [文件/目录]
|
96 |
|
97 | ```shell
|
98 | rm -r -i testdir
|
99 | ```
|
100 |
|
101 | **批量删除 `icons` 文件夹中的子文件夹中的 data 文件夹**
|
102 |
|
103 | ```shell
|
104 | rm -rf icons/**/data
|
105 | ```
|
106 |
|
107 | **rm 忽略不存在的文件或目录**
|
108 |
|
109 | > -f 选项(LCTT 译注:即 “force”)让此次操作强制执行,忽略错误提示
|
110 |
|
111 | ```shell
|
112 | rm -f [文件...]
|
113 | ```
|
114 |
|
115 | **仅在某些场景下确认删除**
|
116 |
|
117 | > 选项 -I,可保证在删除超过 3 个文件时或递归删除时(LCTT 译注: 如删除目录)仅提示一次确认。
|
118 |
|
119 |
|
120 | ```shell
|
121 | rm -I file1 file2 file3
|
122 | ```
|
123 |
|
124 | **删除根目录**
|
125 |
|
126 | > 当然,删除根目录(/)是 Linux 用户最不想要的操作,这也就是为什么默认 rm 命令不支持在根目录上执行递归删除操作。
|
127 | > 然而,如果你非得完成这个操作,你需要使用 --no-preserve-root 选项。当提供此选项,rm 就不会特殊处理根目录(/)了。
|
128 |
|
129 | ```shell
|
130 | 不给实例了,操作系统都被你删除了,你太坏了😆
|
131 | ```
|
132 |
|
133 | **rm 显示当前删除操作的详情**
|
134 |
|
135 | ```shell
|
136 | rm -v [文件/目录]
|
137 | ```
|
138 |
|
139 |
|