You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RedHat按指定创建日期移动文件,解决-exec参数缺失报错

修复-exec参数错误及优化方案

一、修复现有命令的错误

你的find命令报错是因为-exec选项必须以;或+结尾,用来标记执行命令的结束,当前命令缺少这个关键的结尾符。

修复后的命令有两种常用写法:

写法1:逐个处理文件(适合小批量)

find /root/call_log/files23 -type f -newermt 2022-06-01 ! -newermt 2022-06-02 -exec mv {} /archive \;
  • 注意;前必须加反斜杠转义,防止被Shell解析为命令分隔符。
  • 该写法会为每个匹配文件单独执行一次mv,逻辑简单但文件量大时效率偏低。

写法2:批量处理文件(适合大批量)

find /root/call_log/files23 -type f -newermt 2022-06-01 ! -newermt 2022-06-02 -exec mv {} /archive +
  • +会将所有匹配文件一次性传递给mv,减少进程创建开销,执行效率更高。

二、关于“创建日期”的注意点

你提到按创建日期筛选,但-newermt比较的是文件的修改时间(mtime)。如果需要严格按创建时间筛选,不同系统参数不同:

  • Linux(ext4等支持的文件系统):用-newerBt匹配文件的“出生时间”;若仅能获取元数据变更时间,可使用-newerct
  • macOS:用-newerBt匹配文件创建时间

比如Linux下按创建时间筛选的命令示例:

find /root/call_log/files23 -type f -newerBt 2022-06-01 ! -newerBt 2022-06-02 -exec mv {} /archive +

三、更优实现:xargs配合find

对于批量移动场景,xargs是另一种高效方案,尤其适合处理含空格/特殊字符的文件名:

find /root/call_log/files23 -type f -newermt 2022-06-01 ! -newermt 2022-06-02 -print0 | xargs -0 mv -t /archive
  • -print0和-0确保文件名中的特殊字符被正确解析,避免出错。
  • -t /archive指定mv的目标目录,让xargs传递的所有文件名作为源文件参数。

内容的提问来源于stack exchange,提问作者Sourav Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:35:24