find命令中的-exec选项

-exec 选项通常用于在 find 命令的结果集上执行特定的命令。以下是一些使用 -exec 的示例:

  1. 查找并删除文件:

    find /path/to/files -type f -name "*.bak" -exec rm {} \;
    

    这个命令查找 /path/to/files 目录及其子目录中所有以 “.bak” 结尾的文件,并使用 rm 命令删除它们。

  2. 查找并压缩文件:

    find /path/to/files -type f -name "*.txt" -exec gzip {} \;
    

    这个命令查找 /path/to/files 目录及其子目录中所有以 “.txt” 结尾的文件,并使用 gzip 命令对它们进行压缩。

  3. 查找并复制文件到目标目录:

    find /path/to/files -type f -name "*.jpg" -exec cp {} /path/to/destination/ \;
    

    这个命令查找 /path/to/files 目录及其子目录中所有以 “.jpg” 结尾的文件,并使用 cp 命令将它们复制到 /path/to/destination/ 目录。

  4. 查找并打印文件信息:

    find /path/to/files -type f -name "*.log" -exec ls -l {} \;
    

    这个命令查找 /path/to/files 目录及其子目录中所有以 “.log” 结尾的文件,并使用 ls -l 命令打印它们的详细信息。

  5. 查找并修改文件权限:

    find /path/to/files -type f -name "*.sh" -exec chmod +x {} \;
    

    这个命令查找 /path/to/files 目录及其子目录中所有以 “.sh” 结尾的文件,并使用 chmod +x 命令将它们的权限更改为可执行。

这些示例展示了 -exec 如何与 find 结合使用,可以根据具体需求调整命令和参数。上述示例中每个 -exec 后面都以 \; 结尾,其表示 -exec 的结束,其实我们还可以使用'+'。在 find 命令中,-exec 后面以'+'结尾表示将匹配到的文件一次性传递给执行命令,而不是为每个文件单独执行一次。这种方式对于一次性处理多个文件可以提高效率,因为它可以将多个文件名合并成一个参数列表,减少命令启动的次数。
find 命令中,-exec 后面以’+'结尾表示将匹配到的文件一次性传递给执行命令,而不是为每个文件单独执行一次。这种方式对于一次性处理多个文件可以提高效率,因为它可以将多个文件名合并成一个参数列表,减少命令启动的次数。

以下是使用 -exec ... + 的示例:

find /path/to/files -type f -name "*.txt" -exec cat {} +

这个命令会在 /path/to/files 目录及其子目录中找到所有以 “.txt” 结尾的文件,并使用 cat 命令将它们的内容合并输出到终端。在这个例子中,{} + 表示将匹配到的文件名合并成一个参数列表,一次传递给 cat 命令。

这种使用方式与 -exec ... \; 的区别在于,后者会为每个匹配到的文件分别执行一次命令,而前者会将所有匹配到的文件名合并成一个参数列表,然后执行一次命令。这有助于提高效率,尤其是当需要处理大量文件时
如需要删除修改天数为10天前的文件夹:

find /path/to/your/directory -type d -mtime +10 -exec rm -r {} \;

在上述命令中:

/path/to/your/directory 是你要开始查找的目录的路径。
-type d 表示查找目录。
-mtime +10 表示查找最后一次修改时间在 10 天之前的目录。
-exec rm -r {} \; 表示对找到的每个目录执行 rm -r 命令,即递归删除目录。


Find中的-path选项:
-path 选项是 find 命令用于匹配文件路径的一种模式匹配选项。它允许你指定一个模式,用于匹配文件或目录的完整路径。

具体来说,-path 选项允许你使用通配符和正则表达式来匹配文件路径。这对于查找特定路径模式的文件非常有用。

以下是一个简单的例子,假设你想要查找当前目录及其子目录中所有以 “abc_” 开头的文件夹下的 sim.log 文件:

find . -type f -path "./abc_*/sim.log"

在这个例子中:

  • . 表示从当前目录开始查找。
  • -type f 表示查找文件而不是目录。
  • -path "./abc_*/sim.log" 使用路径模式匹配,其中 ./abc_*/sim.log 表示匹配以 “abc_” 开头的文件夹下的 sim.log 文件。

请注意,-path 选项中使用的模式是基于文件路径的,而不是文件名。这使得你可以指定更复杂的路径模式来匹配你需要查找的文件或目录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日拱一卒_未来可期

若复习顺利望有闲钱的同学支持下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值