如何在脚本中对 gzip 日志文件进行正则表达式
How to Regex in a script to gzip log files
我想 gzip 日志文件,但我不知道如何在我的命令中 运行 正则表达式。
我的日志文件是这样的,它们每小时滚动一次。
-rw-r--r-- 1 aus nds 191353 Sep 28 01:59 fubar.log.20150928-01
-rw-r--r-- 1 aus nds 191058 Sep 28 02:59 fubar.log.20150928-02
-rw-r--r-- 1 aus nds 190991 Sep 28 03:59 fubar.log.20150928-03
-rw-r--r-- 1 aus nds 191388 Sep 28 04:59 fubar.log.20150928-04
脚本。
FUBAR_DATE=$(date -d "days ago" +"%Y%m%d ")
fubar_file="/apps/fubar/logs/fubar.log."$AUS_DATE"-^[0-9]"
/bin/gzip $fubar_file
我已经尝试了一些使用正则表达式的变体但没有成功,你能看到我代码中的简单错误吗?
提前致谢
为什么不制作 fubar_file
一个数组来保存匹配的日志文件名,然后使用循环分别 gzip
它们。然后假设 AUS_DATE
包含 20150928
:
# FUBAR_DATE=$(date -d "days ago" +"%Y%m%d ") # not needed for gzip
fubar_file=( /apps/fubar/logs/fubar.log.$AUS_DATE-[0-9][0-9] )
for i in ${fubar_file[@]}; do
gzip "$i"
done
或者如果您不需要在数组中保留文件名供以后使用,只需 gzip
带有 for 循环的文件:
for i in /apps/fubar/logs/fubar.log.$AUS_DATE-[0-9][0-9]; do
gzip "$i"
done
或者,简单地使用 find
来匹配文件和 gzip
它们:
find /apps/fubar/logs -type f -name "fubar.log.$AUS_DATE-[0-9][0-9]" -execdir gzip '{}' +
注意: 所有答案都假定 AUS_DATE
包含 20150928
.
我做到了:
$ fubar_file="./fubar.log."${FUBAR_DATE%% }"-[0-9][0-9]"
它对我有用。
我想 gzip 日志文件,但我不知道如何在我的命令中 运行 正则表达式。
我的日志文件是这样的,它们每小时滚动一次。
-rw-r--r-- 1 aus nds 191353 Sep 28 01:59 fubar.log.20150928-01
-rw-r--r-- 1 aus nds 191058 Sep 28 02:59 fubar.log.20150928-02
-rw-r--r-- 1 aus nds 190991 Sep 28 03:59 fubar.log.20150928-03
-rw-r--r-- 1 aus nds 191388 Sep 28 04:59 fubar.log.20150928-04
脚本。
FUBAR_DATE=$(date -d "days ago" +"%Y%m%d ")
fubar_file="/apps/fubar/logs/fubar.log."$AUS_DATE"-^[0-9]"
/bin/gzip $fubar_file
我已经尝试了一些使用正则表达式的变体但没有成功,你能看到我代码中的简单错误吗? 提前致谢
为什么不制作 fubar_file
一个数组来保存匹配的日志文件名,然后使用循环分别 gzip
它们。然后假设 AUS_DATE
包含 20150928
:
# FUBAR_DATE=$(date -d "days ago" +"%Y%m%d ") # not needed for gzip
fubar_file=( /apps/fubar/logs/fubar.log.$AUS_DATE-[0-9][0-9] )
for i in ${fubar_file[@]}; do
gzip "$i"
done
或者如果您不需要在数组中保留文件名供以后使用,只需 gzip
带有 for 循环的文件:
for i in /apps/fubar/logs/fubar.log.$AUS_DATE-[0-9][0-9]; do
gzip "$i"
done
或者,简单地使用 find
来匹配文件和 gzip
它们:
find /apps/fubar/logs -type f -name "fubar.log.$AUS_DATE-[0-9][0-9]" -execdir gzip '{}' +
注意: 所有答案都假定 AUS_DATE
包含 20150928
.
我做到了:
$ fubar_file="./fubar.log."${FUBAR_DATE%% }"-[0-9][0-9]"
它对我有用。