获取文件夹的名称并与bash中的整数进行比较
好的,我要做的是,我所有的备份文件夹都命名为日期03-07-13。因此,我试图选择日期,如果它大于或等于7天,它将删除。这是我目前所拥有的,但它不起作用获取文件夹的名称并与bash中的整数进行比较,bash,date,directory,Bash,Date,Directory,好的,我要做的是,我所有的备份文件夹都命名为日期03-07-13。因此,我试图选择日期,如果它大于或等于7天,它将删除。这是我目前所拥有的,但它不起作用 DATE=$(date +"%d") for i in /media/backupdrive/*; do DAY=${i:22:2} if [ "$DAY" -ge "7" ] then echo "day greater than 7"; fi done 22:2切断/media/backu
DATE=$(date +"%d")
for i in /media/backupdrive/*; do
DAY=${i:22:2}
if [ "$DAY" -ge "7" ]
then
echo "day greater than 7";
fi
done
22:2切断/media/backupdrive/00-
00代表月份
现在它只是检查它是否大于7,如果大于7,它就会打印出来
编辑:问题已解决。我要感谢你们所有帮助bash初学者的人。再次感谢你 使用“DAY”变量会使您面临“刚刚结束”的问题 一些备选方案:
- 更改文件夹格式,使其更具描述性李>
- 在每个文件夹中添加一个元文件,以提供更易于解析和使用的时间值
- 为包含上述数据的备份文件夹建立索引
[epoch seconds]-[YYYY][MM][DD]-[HH]:[MM]:[SS]
DAY=${i:22:2}
if [ "$day" -ge "7" ]
这使您可以执行诸如请求从现在开始7天的备份之类的操作。你可以用纪元秒来计算,这样就避免了一天一天的混乱
基本上,历元秒是为了使时间计算更容易。其他时间戳位使其具有可读性。排序使其在文件夹列表中正确排序
编辑:
如果备份路径发生更改:
DAYtmp=${i: -8:5}
DAY=${DAYtmp: -2}
如果父路径长度发生变化,这将从文件夹名称中生成日期。根据注释中给出的屏幕截图,实际代码使用以下内容:
[epoch seconds]-[YYYY][MM][DD]-[HH]:[MM]:[SS]
DAY=${i:22:2}
if [ "$day" -ge "7" ]
强调DAY
和$DAY
之间的资本化差异。运行此操作时,它试图将空字符串与字符串(或通过-ge
“数字”)进行比较,这将导致您收到的错误
尝试更新if
语句以使用大写版本:
if [ "$DAY" -ge "7" ]
似乎要删除超过7天的文件。
find
命令可以为您查找这些文件,并可以选择删除它们:
find /media/backupdrive -mtime +7 # Files that are older than 7 days
find /media/backupdrive -mtime +7 -delete # ... and delete them
…那么你的问题是什么?对不起,我没有告诉你。上面说“应在if语句行中使用整数表达式。我需要将DAY变量设置为整数,以便将其与当前日期进行比较,以及它是否大于或等于7代码>在循环中,值是多少?它将打印出06和07。/backupdrive/目录中的两个文件夹分别为03-06-13和03-07-13,其中有输出的屏幕截图。22适合我,但这是它在if声明中给我的错误你们不知道我在这方面遇到了多少麻烦。谢谢你帮助初学者进步!!!!!