我正在开发一个 bash 脚本,该脚本需要根据一个变量搜索单个目录中“旧”的文件,该变量指定在超过阈值之前需要经过多少天,并且文件被标记为要执行操作(可以是任何内容)从移动到存档到删除,等等...)。
问题是文件的修改时间与确定文件需要多久才能采取行动无关,因为文件可能很少更改,脚本的执行时间可能会有所不同,等等......
确定文件保存的时间是实际文件名,格式为 YYYY-MM-DD(或带有日期命令的 %F)。以文件名contents-2011-05-23.txt为例。可以在此目录中运行哪些命令来查找超过一定天数的所有文件(我当前将阈值设置为 7 天,可以更改)并打印出它们的文件名?
创建一个 bash 脚本 isOld.sh,如下所示:
#!/bin/bash
fileName=$1
numDays=$2
fileDt=$(echo $fileName | sed 's/^[^-]*-\([^.]*\)\..*$/\1/')
d1=$(date '+%s')
d2=$(date -d $fileDt '+%s')
diff=$((d1-d2))
seconds=$((numDays * 24 * 60 * 60))
[[ diff -ge seconds ]] && echo $fileName
然后通过运行以下命令向上述文件授予执行权限:
chmod +x ./isOld.sh
最后从目录顶部运行此 find 命令来打印超过 7 天的文件,如下所示:
find . -name "contents-*" -exec ./isOld.sh {} 7 \;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)