Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取文件夹的名称并与bash中的整数进行比较_Bash_Date_Directory - Fatal编程技术网

获取文件夹的名称并与bash中的整数进行比较

获取文件夹的名称并与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

好的,我要做的是,我所有的备份文件夹都命名为日期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/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声明中给我的错误你们不知道我在这方面遇到了多少麻烦。谢谢你帮助初学者进步!!!!!