我正在制作一个bash脚本,以便其他系统管理员可以轻松地使用日志文件读取某个文件夹。到目前为止,该脚本读取了两个变量,$ STARTDATE& $ ENDDATE。每天都有一个日志文件,在本例中称为YYYY-mm-dd.log。我希望脚本输出所有日志文件的内容,其名称等于或介于两个变量之间。
例如: 如果我输入2015-01-18的$ STARTDATE和2015-01-20的$ ENDDATE,我希望脚本输出以下内容:
有一种简单的方法吗?
谢谢!
答案 0 :(得分:1)
如果您使用bash并且可以保证日志文件名格式一致,那么您应该能够使用这样的内容。
startdate=$1
enddate=$2
for logfile in /path/to/logfiles/*; do
lf=$(basename "$logfile" .log)
if [[ "$lf" > "$startdate" && "$lf" < "$enddate ]]; then
echo "### $logfile"
cat "$logfile"
fi
done
请注意,我使用的是小写startdate
和enddate
。通常的做法是为shell / etc保留ALL_UPPER
个变量。
答案 1 :(得分:1)
dir=.
STARTDATE=2015-01-04; ENDDATE=2015-01-12
dates=`find -s "$dir" -name '*log' | sed -e 's@.*/@@' -e 's/\..*//' | while read file; do [ $file \< $STARTDATE -o $file \> $ENDDATE ] || echo $file; done`
for date in $dates; do cat "$dir"/$date.log; done