Linux命令-rm解读-删除文件或目录

作者:袖梨 2026-07-12

快速参考rm 是 Linux 中永久删除文件和目录的核心命令。删除的文件不会进入回收站而是直接移除,rm -rf / 会删除整个系统,是 Linux 中最危险的命令之一。

Linux命令-rm解读(删除文件或目录)

危险警告rm -rf / 会直接删除根目录下所有文件!rm 无回收站机制,删除不可逆!

回滚与安全措施

删除前务必确认路径;重要数据先 cp -a 备份;普通用户配合 rm -i;关键目录设置 chattr +i 防删。

# 备份后删除cp -a /important/data /backup/data_$(date +%Y%m%d)rm -rf /important/data# 恢复cp -a /backup/data_20260614 /important/data# 防止误删关键目录sudo chattr +i /etc/passwdsudo chattr -i /etc/passwd  # 取消

命令语法

rm [选项] 文件 ...

常用选项

选项说明
-f强制删除,不提示确认
-i交互模式,删除前逐一确认
-r, -R递归删除目录及内容
-v显示删除过程
-d删除空目录
--preserve-root禁止删除根目录(默认开启)
--no-preserve-root允许删除根目录(极度危险)

场景化实例

1. 基本文件删除

# 删除单个文件rm old_file.txt# 交互式确认删除rm -i important.txt# rm: remove regular file 'important.txt'? y# 强制删除(不提示)rm -f temp.log

2. 递归删除目录

# 删除目录及所有内容rm -rf old_project_dir# 详细模式显示进度rm -rfv /tmp/cleanup_dir# 安全删除:先列出内容ls -la target_dir && rm -rf target_dir

3. 通配符批量删除

# 删除所有 .log 文件rm -f *.log# 删除特定模式文件rm -f temp_*.txt backup_*.tar.gz# 预览再删除echo "将删除以下文件:"ls *.tmp 2>/dev/nullread -p "确认删除?(yes) " ans[ "$ans" = "yes" ] && rm -f *.tmp

4. 排除特定文件的删除

# 删除除 keep.txt 外的所有文件shopt -s extglobrm -f !(keep.txt)# 使用 find 排除find . -maxdepth 1 -type f ! -name "keep_*" -delete# 使用 grep 排除ls | grep -v "important" | xargs rm -f

5. 安全删除脚本

#!/bin/bash# 安全删除:先移动到回收站目录TRASH_DIR="$HOME/.trash/$(date +%Y%m%d_%H%M%S)"safe_rm() {    mkdir -p "$TRASH_DIR"    for item in "$@"; do        if [ -e "$item" ]; then            mv "$item" "$TRASH_DIR/"            echo "已移至回收站: $item -> $TRASH_DIR"        else            echo "不存在: $item"        fi    done}safe_rm "$@"# 清理 30 天前的"回收站"find "$HOME/.trash" -maxdepth 1 -type d -mtime +30 -exec rm -rf {} ;

6. 查找并删除过期文件

# 删除 7 天前的临时文件find /tmp -type f -mtime +7 -delete# 删除大于 100M 的旧日志find /var/log -type f -name "*.log" -size +100M -mtime +30 -exec rm -f {} ;# 删除空目录find /data -type d -empty -delete

7. 处理顽固文件

# 删除特殊字符文件名rm -- "-rf"         # -- 停止选项解析rm ./-rf           # 使用路径rm -- "--help"# 删除只读文件rm -f readonly.txt# 删除链接本身而非目标rm symlink_name

安全配置

# ~/.bashrc 添加 rm 别名alias rm='rm -i'alias rmf='rm -f'# 如需要强制删除:rm -rf  (反斜杠跳过别名)# 系统级保护:/etc/profilealias rm='rm -i --preserve-root'

最佳实践

生产环境设置 alias rm='rm -i';重要目录用 chattr +i;定期检查 rm 历史记录。

# 删除前必须确认alias rm='rm -i --preserve-root'# 查找未删除的空目录find . -type d -empty# 查看最近删除记录cat ~/.bash_history | grep "^rm" | tail -20

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

您可能感兴趣的文章:
  • Linux命令rm如何删除名字以“-”开头的文件
  • 防止Linux rm命令误操作的多场景防护方案与实践
  • idea的终端(Terminal)cmd的命令换成linux的命令详解
  • Linux执行Docker命令提示Get Permission Denied的解决方案
  • Linux命令之-rm命令使用示例

相关文章

精彩推荐