Linux系统下 find 命令的 -exec 参数

1. 基本作用

-exec 用来对 find 找到的每个文件 执行指定的命令。 语法是:

find <路径> <条件> -exec <命令> {} \;

解释:

  • {} → 代表当前找到的文件(一个一个替换进去)

  • \; → 表示命令结束(; 需要转义,避免被 shell 提前解释)


2. 基本示例

查找并删除

find . -type f -name "*.log" -exec rm {} \;

找到当前目录所有 .log 文件,并逐个执行 rm 文件名

查找并显示详细信息

find /etc -type f -name "*.conf" -exec ls -l {} \;

找到 etc 下的 .conf 文件,并对每个执行 ls -l 文件名


3. \;+ 的区别

  • \;一个文件执行一次命令,效率低。

  • +多个文件一起执行命令(批量),效率高。

示例:

# 每个文件执行一次 ls -l
find . -type f -exec ls -l {} \;
​
# 批量把所有找到的文件交给 ls -l 一次执行
find . -type f -exec ls -l {} +

如果命令支持一次处理多个文件,用 + 更快。


4. 常见用法

删除 30 天前的日志

find /var/log -type f -mtime +30 -exec rm -f {} \;

移动文件到备份目录

find ./data -type f -name "*.csv" -exec mv {} /backup/csv/ \;

批量替换权限

find /var/www -type f -exec chmod 644 {} \;
find /var/www -type d -exec chmod 755 {} \;

压缩找到的.txt文件

find ./ -name "*.txt" -exec tar -rvf texts.tar {} \;

📌 两种写法对比

逐个执行(慢)

find . -type f -exec ls -l {} \;

流程:

  • 每找到 1 个文件 → 执行 1 次命令

  • 找到 1000 个文件 → 共执行 1000 次命令


批量执行(快)

find . -type f -exec ls -l {} +

流程:

  • 找到多个文件 → 一次性传给命令

  • 找到 1000 个文件 → 可能只执行几次命令


📌 交互式执行

find . -type f -ok rm {} \;

流程:

  • 找到文件 → 提示 rm ... ?

  • 输入 y 执行,n 跳过

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值