我需要自动打开文件并分析其内容。
由于每个文件夹中都有具有不同命名模式的不同文件,我正在努力寻找打开它们的方法。
我只需要打开具有特定模式的文件: "error_YYYYMMDD_xyz.json" "xyz 是 0 到 999 之间的数字。
在我只需要搜索特定文件之前我就使用了这个算法:
for folder in `ls -d $path`
do
for file in `ls $folder`
do
erreur=`jq ".tot_type" $folder/$file`
date=`echo $folder/$file | cut -d '_' -f2 | cut -c7-8 `
if [ \( "$erreur" > 0 \) ]
then
j$date=`expr ${j$date} + 1`
fi
done
done
我怎样才能做到这一点?
答案1
我不确定您到底想实现什么目标。
据我了解,你可以参考这个回答并尝试将第二个for
循环替换为:
for file in `ls $folder | egrep 'error_[0-9]{8}_[0-9]{3}\.json'`
它将仅使用与模式对应的文件来过滤 ls 的输出:
error_[0-9]{8}_[0-9]{3}.json
您可以使用仅对应于以“20XX”开始的日期、“01”和“12”之间的月份以及“01”和“31”之间的日期的模式进行更精确的过滤,以限制更多过滤器。