Ste*_*e88 121 unix bash shell find
我是shell脚本的新手,有人可以帮忙吗?我想删除文件夹中的脚本,从当前日期回到10天.脚本如下:
2012.11.21.09_33_52.script
2012.11.21.09_33_56.script
2012.11.21.09_33_59.script
Run Code Online (Sandbox Code Playgroud)
该脚本将每隔10天与Crontab一起运行,这就是我需要当前日期的原因.
Gil*_*not 407
find 是这类任务的常用工具:
find ./my_dir -mtime +10 -type f -delete
Run Code Online (Sandbox Code Playgroud)
说明
./my_dir 你的目录(用你自己的替换)-mtime +10 超过10天-type f 只有文件-delete没有惊喜.在执行整个命令之前删除它以测试find过滤器并注意./my_dir存在以避免不良意外!
Mar*_*Zen 15
只需加密shell脚本即可删除旧文件
#!/bin/bash
path="/data/backuplog/"
timestamp=$(date +%Y%m%d_%H%M%S)
filename=log_$timestamp.txt
log=$path$filename
days=7
START_TIME=$(date +%s)
find $path -maxdepth 1 -name "*.txt" -type f -mtime +$days -print -delete >> $log
echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> $log
... code for backup ...or any other operation .... >> $log
END_TIME=$(date +%s)
ELAPSED_TIME=$(( $END_TIME - $START_TIME ))
echo "Backup :: Script End -- $(date +%Y%m%d_%H%M)" >> $log
echo "Elapsed Time :: $(date -d 00:00:$ELAPSED_TIME +%Hh:%Mm:%Ss) " >> $log
Run Code Online (Sandbox Code Playgroud)
代码建立在sputnick的答案之上,并增加了一些东西.
如果你能负担得起通过文件数据工作,你可以做到
find -mmin +14400 -delete
Run Code Online (Sandbox Code Playgroud)