跳到主要内容

rm 命令

介绍

rm(英文全拼:remove)命令用于删除一个文件或者目录。

rm 是常用的命令,它可以删除一个指定文件或目录,也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。

rm 是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令。所以,在执行 rm 命令之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。

语法

rm [OPTION]... [FILE]...

选项

  • -i :删除前逐一询问确认。
  • -f :即使文件属性为只读,也直接删除,无需逐一确认。
  • -r :将目录及其里面的文件逐一删除。

示例

删除文件:

rm test.txt

删除目录:

rm -r dir/

删除前逐一询问确认:

$ rm -i dir/*

直接删除,不作任何提示:

rm -f test.txt.bz2  

清空系统中所有的文件(谨慎!除非你知道自己在干嘛,否则永远不要使用):

rm -rf /*

如果不小心创建了一些特殊文件,可不好删除,比如一个名为 -D 的文件。执行 rm -D 会将文件名误认为选项,这时候可以通过文件的 inode 硬链接编号来删除。

首先,使用 stat 命令查看 inode 号:

  文件:./-D
大小:0 块:0 IO 块:4096 普通空文件
设备:816h/2070d Inode:9568258 硬链接:1
权限:(0664/-rw-rw-r--) Uid:( 1000/ rudy) Gid:( 1000/ rudy)
最近访问:2021-04-14 15:12:32.962045401 +0800
最近更改:2021-04-14 15:12:32.962045401 +0800
最近改动:2021-04-14 15:12:32.962045401 +0800

或者,使用 ls 命令加 -i 选项查看 inode 号:

$ ls -il
9568258 -rw-rw-r-- 1 rudy rudy 0 414 15:12 -D

接着使用 find 命令通过 inode 号查找文件并使用 rm 命令删除:

$ find . -inum 9568258 -exec rm -i {} \;
rm:是否删除普通空文件 './-D'? y

为避免删错文件,这里使用了 rm 的交互式删除。

不需要交互时,可以将 rm 后的 -i 选项去掉,或者直接使用 delete 进行删除:

$ find . -inum 9568258 -delete