当前位置:首页>Linux>Linux命令每日一清单028:rm--文件删除命令速查表

Linux命令每日一清单028:rm--文件删除命令速查表

  • 2026-09-13 11:06:19
Linux命令每日一清单028:rm--文件删除命令速查表

rm(remove)是Linux/Unix系统中用于删除文件和目录的基础命令。与图形界面的“移动到回收站”不同,rm执行的是直接、彻底的删除操作,被删除的文件通常无法通过常规方式恢复。

rm命令功能强大但风险极高,尤其是配合-r(递归)和-f(强制)选项使用时,一个错误的操作可能导致系统崩溃或数据永久丢失。因此,掌握rm的安全使用模式是每个Linux用户的基本素养。理解rm的各种选项及其风险,培养谨慎的操作习惯,可以避免灾难性的数据丢失。

1. 基本语法

命令说明
rm [options] file...
删除一个或多个文件
rm -r [options] directory...
递归删除目录及其内容
rm -- filename
将参数视为文件名(即使以-开头)
rm -i file.txt
删除前逐个提示确认
rm -f file.txt
强制删除(忽略不存在的文件,不提示)

2. 删除文件

命令说明
rm file.txt
删除单个文件
rm file1.txt file2.txt file3.txt
删除多个文件
rm *.log
删除所有匹配log扩展名的文件
rm -- -strange-filename
删除以-开头的文件
rm -v file.txt
删除文件并显示详细信息
rm -f *.tmp
强制删除临时文件(忽略不存在的)

3. 删除目录

命令说明
rm -r directory/
递归删除目录及其所有内容
rm -rf directory/
强制递归删除(不提示,最危险)
rm -r dir1 dir2
删除多个目录
rm -r -- */
删除当前路径下的所有目录
rm -rf /path/to/dir
删除指定路径的目录(谨慎使用)
rmdir empty-dir/
仅删除空目录(更安全的替代)

4. 提示与安全选项

选项说明
-i
删除每个文件前都提示确认
-I
删除多个文件前提示一次(比-i少打扰)
--interactive=always
始终提示(同-i)
--interactive=once
提示一次(同-I)
-f
强制删除,忽略不存在的文件,永不提示
-v
显示详细信息(删除时输出文件名)

交互示例:

$ rm -I *.log
rm: remove 5 arguments? (y/N) y

5. 安全删除模式

命令/技巧说明
rm -i file.txt
删除前确认
alias rm='rm -i'
设置别名,默认交互模式
ls file* && rm file*
先确认再删除
find . -name "*.tmp" -delete
使用find的-delete替代rm
rm -rf -- /path/to/trash/*
删除前确保路径正确
mkdir -p ~/.trash; mv file.txt ~/.trash/
使用“垃圾桶”机制

防止误删除根目录:

# rm -rf / 是极度危险的命令
# 现代rm实现会阻止删除根目录,除非使用 --no-preserve-root
rm -rf --no-preserve-root /   # 极其危险!切勿执行!

6. 实用组合模式

命令说明
find . -type f -name '*.tmp' -delete
删除所有临时文件
find . -type d -empty -delete
删除所有空目录
rm -rf -- build/ dist/ node_modules/
删除常见构建目录
rm -f -- *.bak *.old *.orig
安静删除备份文件
rm -rf !(keep.txt)
删除除keep.txt外的所有文件(需开启extglob)
shopt -s extglob; rm -rf !(keep|save)
删除除keep和save外的所有文件
ls -1 | grep -v '^keep' | xargs rm -rf
删除除keep外的所有文件(复杂版)

7. 通配符使用技巧

模式说明
*
匹配任意字符串(0个或多个字符)
?
匹配任意单个字符
[abc]
匹配a、b或c中的任意一个
[a-z]
匹配任意小写字母
{foo,bar}
匹配foo或bar(花括号扩展)
!pattern
不匹配指定模式(需启用extglob)

示例:

rm file[0-9].txt   # 删除file0.txt到file9.txt
rm file{a,b,c}.log# 删除filea.log, fileb.log, filec.log
rm *.??            # 删除扩展名为2个字符的文件

8. 替代方案(更安全)

替代命令说明
trash-put file.txt
将文件移动到回收站(需安装trash-cli)
mv file.txt ~/.local/share/Trash/files/
手动移动到回收站
rmdir empty-dir/
仅删除空目录(不会误删内容)
find . -delete
find内置删除,比-exec rm更安全
unlink file.txt
删除单个文件(不能删除目录)

9. 常用选项速查

选项完整名称说明
-r
--recursive
递归删除目录及其内容
-R
--recursive
同-r
-f
--force
强制删除,忽略不存在的文件,不提示
-i
--interactive
删除前逐个提示
-I
--interactive=once
删除多个文件前提示一次
-v
--verbose
显示详细信息
-d
--dir
删除空目录(通常用-r替代)
--no-preserve-root
-
允许删除根目录(危险!)
--preserve-root
-
保护根目录(默认)

10. 故障排查

问题解决方法
Permission denied
检查文件所有者和权限;使用sudo(仅必要时)
Is a directory
删除目录需使用-r选项
No such file or directory
检查路径和通配符展开是否正确
文件名以-开头无法删除
使用rm -- -filename
通配符删除过多文件
先用ls测试通配符;使用-i或-I确认
删除后磁盘空间未释放
文件可能仍被进程占用,使用`lsof
rm -rf / 误执行
*
立即停止操作;从备份恢复(务必提前备份)

11. 防范误删除的最佳实践

# 设置别名:

alias rm='rm -i'# 默认交互模式
alias rm='rm -I'# 批量删除时提示一次

# 使用垃圾桶机制:

# 在~/.bashrc中添加
alias trash='mv -t ~/.trash'
mkdir -p ~/.trash

# 定期备份:

# 重要数据定期备份
rsync -av /important/data /backup/

# 避免使用root删除:

# 尽量使用普通用户,需要时才sudo

# 删除前确认:

# 删除前先用ls确认
ls file* && rm file*

温馨提示: rm是双刃剑,功能强大但风险极高。永远不要执行rm -rf /、rm -rf /*、rm -rf ./*等危险命令。删除前建议:1)使用ls或find预览匹配结果;2)使用-i或-I选项确认;3)养成定期备份习惯;4)考虑使用trash-cli等工具代替直接删除。在脚本中使用rm时,务必使用双引号包围变量路径,避免路径为空时删除根目录。删除是永久性的,谨慎永远不为过!

本文PDF格式下载:

  关注公众号(haopython),请回复: LLTRM

最新文章

随机文章