0

我正在使用此代码获取正文中的所有.log文件ERROR:(不是名称)。但是,我想不出一种方法来仅选择名称中包含今天名称的文件。

ls -1 /fbrms01/dev/Logs/*.log | xargs grep -l "ERROR:"

给出这个输出:

/fbrms01/dev/Logs/JB_Authorized_Inventory_End_2013.03.27_17.06.40.log
/fbrms01/dev/Logs/JB_Authorized_Inventory_End_2013.03.27_18.03.05.log
/fbrms01/dev/Logs/JB_Authorized_Inventory_End_2013.03.27_20.54.34.log
/fbrms01/dev/Logs/JB_CreateFormat_2013.03.18_08.27.49.log
/fbrms01/dev/Logs/JB_CreateFormat_2013.03.18_17.21.31.log
/fbrms01/dev/Logs/JB_CreateFormat_2013.03.28_15.30.41.log
/fbrms01/dev/Logs/JB_ExtReservationDetail_2013.03.15_13.06.26.log
/fbrms01/dev/Logs/JB_Report_Master_2013.03.18_09.53.38.log
/fbrms01/dev/Logs/JB_Throughput_Capacity_2013.03.28_16.49.05.log

文件名称中的日期是_yyyy.mm.dd_格式。有什么方法可以在 unix 中获取今天的日期并将其与名称进行比较并仅提取那些?

4

2 回答 2

2

你得到今天的约会

TODAY=$(date +"%Y.%m.%d")

您可以通过以下方式找到具有特定模式的文件的名称:

grep -l ERROR /your/dir/*

as -lpattern 将显示与该模式匹配的文件。

因此,您甚至可以直接 grep$TODAY名称中包含的文件:

grep -l ERROR /fbrms01/dev/Logs/JB_Authorized_Inventory_End_$TODAY*.log
于 2013-03-29T21:05:05.063 回答
0

我想这就是你要找的:

grep -l "ERROR:" `ls -1 /fbrms01/dev/Logs/*.log | grep "\`date +"%Y.%m.%d"\`"`
于 2013-03-29T21:37:58.373 回答