Unix新手求助:如何创建crontab任务定时迁移指定规则文件?
定时移动指定文件的crontab配置方案
一、最终crontab条目
直接在crontab中添加以下内容即可实现需求:
30 21 12 4,11 * mkdir -p ~/backups && find ~ -maxdepth 1 -type f -name "*f[137]*" -exec mv {} ~/backups/ \;
二、各部分解释
时间规则:
30 21 12 4,11 *- 30:分钟
- 21:小时(24小时制)
- 12:日期
- 4,11:月份(4=4月,11=11月)
- *:星期(任意星期几都执行)
整体表示每年4月12日、11月12日的21:30触发任务。
前置保障:
mkdir -p ~/backups-p参数确保backups目录存在,不存在则自动创建,存在则不报错,避免因目录缺失导致移动失败。
文件匹配与移动:
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目录
三、配置步骤
打开crontab编辑器:
crontab -e(如果不习惯vi编辑器,可先执行
export EDITOR=nano切换为nano)将上述完整的crontab条目粘贴到文件末尾。
保存退出:
- vi编辑器:按
Esc,输入:wq回车 - nano编辑器:按
Ctrl+O保存,Ctrl+X退出
- vi编辑器:按
四、测试与注意事项
- 手动测试匹配规则:执行以下命令,查看是否能找到目标文件
find ~ -maxdepth 1 -type f -name "*f[137]*" - 如需记录任务日志,可在crontab条目末尾追加日志输出命令:
修改后完整条目为:>> ~/cron_mv_log.log 2>&130 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
相关产品推荐
相关产品推荐

