我的文件在目录中,如下所示。
$ 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脚本。
答案 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 $list
或list=$( 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
请注意,我已删除了多余的详细信息。悄然成功,大声失败。