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

Unix新手求助:如何创建crontab任务定时迁移指定规则文件?

定时移动指定文件的crontab配置方案

一、最终crontab条目

直接在crontab中添加以下内容即可实现需求:

30 21 12 4,11 * mkdir -p ~/backups && find ~ -maxdepth 1 -type f -name "*f[137]*" -exec mv {} ~/backups/ \;

二、各部分解释

  1. 时间规则:30 21 12 4,11 *

    • 30:分钟
    • 21:小时(24小时制)
    • 12:日期
    • 4,11:月份(4=4月,11=11月)
    • *:星期(任意星期几都执行)
      整体表示每年4月12日、11月12日的21:30触发任务。
  2. 前置保障:mkdir -p ~/backups

    • -p参数确保backups目录存在,不存在则自动创建,存在则不报错,避免因目录缺失导致移动失败。
  3. 文件匹配与移动:find ~ -maxdepth 1 -type f -name "*f[137]*" -exec mv {} ~/backups/ \;

    • ~:指定搜索范围为你的家目录
    • -maxdepth 1:仅搜索家目录下的直接文件,不递归子目录
    • -type f:只匹配普通文件,排除目录(比如backups目录本身)
    • -name "*f[137]*":匹配文件名中包含f1、f3或f7子串的文件
    • -exec mv {} ~/backups/ \;:将找到的每个文件移动到backups目录

三、配置步骤

  1. 打开crontab编辑器:

    crontab -e
    

    (如果不习惯vi编辑器,可先执行export EDITOR=nano切换为nano)

  2. 将上述完整的crontab条目粘贴到文件末尾。

  3. 保存退出:

    • vi编辑器:按Esc,输入:wq回车
    • nano编辑器:按Ctrl+O保存,Ctrl+X退出

四、测试与注意事项

  • 手动测试匹配规则:执行以下命令,查看是否能找到目标文件
    find ~ -maxdepth 1 -type f -name "*f[137]*"
    
  • 如需记录任务日志,可在crontab条目末尾追加日志输出命令:
    >> ~/cron_mv_log.log 2>&1
    
    修改后完整条目为:
    30 21 12 4,11 * mkdir -p ~/backups && find ~ -maxdepth 1 -type f -name "*f[137]*" -exec mv {} ~/backups/ \; >> ~/cron_mv_log.log 2>&1
    
  • 确保系统的crond服务处于运行状态(多数Unix发行版默认已启动)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:16:23