比较昨天创建的文件和今天创建的文件

时间:2020-09-25 14:55:12

标签: linux bash shell

我的文件在目录中,如下所示。

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

example-$today.txt
polar-$today.txt
example-$yesteday.txt
polar-$yesteday.txt

昨天的示例:example-2020-09-24.txt
今天的示例:example-2020-09-25.txt

每天使用cronjob创建文件,因此下面的结构中将包含明天的日期。

example-$tomorrow.txt
polar-$tomorrow.txt

我想比较不同日期以相同名称开头的文件,如果有差异,请执行python脚本。如果存在差异,python脚本将今天的文件作为第一个参数。

if diff example-$today.txt example-$yesteday.txt
then 
echo "No difference"
else
python script.py example-$today.txt
fi

如果我只有2个或3个文件,则可以使用if来为上述每个文件使用diff进行编码,如上所述,但是将来该列表中将填充更多唯一的名称,并且如果命令很繁琐,则编写该文件。

要求:

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

1 个答案:

答案 0 :(得分:1)

似乎做起来不太可怕:

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 ...' ... for base in $listlist=$( cmd to dynamically generate names)或使用数组。有很多灵活性。例如,如果您不想维护文件列表,则可以执行以下操作:

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

请注意,我已删除了多余的详细信息。悄然成功,大声失败。