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

 更新时间:2026年07月11日 10:20:35   作者:RisunJan  
这篇文章主要介绍了Linux命令-rm解读(删除文件或目录),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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

危险警告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/passwd
sudo 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/null
read -p "确认删除?(yes) " ans
[ "$ans" = "yes" ] && rm -f *.tmp

4. 排除特定文件的删除

# 删除除 keep.txt 外的所有文件
shopt -s extglob
rm -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/profile
alias 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

总结

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

相关文章

最新评论