Linux 将昨天创建的文件与今天创建的文件进行比较

Linux 将昨天创建的文件与今天创建的文件进行比较,linux,bash,shell,Linux,Bash,Shell,我有一个目录中的文件,如下格式所示 $today和$Dayed是保存今天日期和昨天日期的两个变量,它们都将保存日期,如下面的结构所示。 今天=$(日期+%Y-%m-%d”) 昨天=$(日期-d“昨天13:00”+%Y-%m-%d') 示例-$today.txt polar-$today.txt 示例-$yesteday.txt polar-$yesteday.txt 昨天的示例:Example-2020-09-24.txt 今天的示例:Example-2020-09-25.txt 文件是使用c

我有一个目录中的文件,如下格式所示

$today和$Dayed是保存今天日期和昨天日期的两个变量,它们都将保存日期,如下面的结构所示。
今天=$(日期+%Y-%m-%d”)
昨天=$(日期-d“昨天13:00”+%Y-%m-%d')

示例-$today.txt
polar-$today.txt
示例-$yesteday.txt
polar-$yesteday.txt
昨天的示例:Example-2020-09-24.txt
今天的示例:Example-2020-09-25.txt

文件是使用cronjob每天创建的,所以在下面的结构中会有明天的文件

示例-$mouther.txt
polar-$mouther.txt
我想比较不同日期以相同名称开始的文件,如果有差异,则执行python脚本。如果有差异,python脚本将今天的文件作为第一个参数

如果差异示例-$today.txt示例-$yesteday.txt
然后
回声“没有区别”
其他的
python script.py示例-$today.txt
fi
如果我只有2个或3个文件,我可以使用If-else代码为每个文件使用上面提到的diff,但是将来列表中会填充更多的唯一名称,编写If命令会很繁琐

要求:


比较昨天和今天目录中具有相同命名文件名的所有txt文件,如果有差异,请执行python脚本。

这样做似乎不太可怕:

for base in example polar; do
    if ! diff ${base}-$today.txt ${base}-$yesteday.txt; then    
        python script.py ${base}-$today.txt
    fi
done
这应该是相当可维护的,您可以编写
list='example polar…'
用于$list中的base,或
list=$(cmd动态生成名称)
,或使用数组。有很大的灵活性。例如,如果不想维护文件列表,可以执行以下操作:

for file in *-${today}.txt; do 
    base="${file%-${today}.txt}"
    if ! diff "${base}-$today.txt" "${base}-$yesteday.txt"; then    
        python script.py "${base}-$today.txt"
    fi
done

请注意,我已经删除了多余的冗长内容。悄悄地成功,大声地失败。

如果错过了一天怎么办?你想让脚本做什么?如果缺少02,请将2020-01-01与2020-01-03进行比较,或者什么也不做?请写出一个确切的文件名示例。是example-2020-01-01.txt吗?还有什么吗?@thanasisp我已经用确切的文件名更新了问题examplenice,请检查第一条评论,如果发现差距怎么办?我想比较2020-01-01和2020-01-02,肯定会有2020-01-02。每天都会创建文件,不会丢失日期。压缩解决方案