如何仅列出名称中包含今天日期的.log文件和错误:在UNIX中的正文中

时间:2013-03-29 20:56:35

标签: date unix text-processing

我使用此代码获取所有.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中并将其与名称进行比较并仅提取那些?

2 个答案:

答案 0 :(得分:2)

今天的日期是

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

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

grep -l ERROR /your/dir/*

因为-l模式将显示与模式匹配的文件。

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

grep -l ERROR /fbrms01/dev/Logs/JB_Authorized_Inventory_End_$TODAY*.log

答案 1 :(得分:0)

我认为这就是你要找的东西:

grep -l "ERROR:" `ls -1 /fbrms01/dev/Logs/*.log | grep "\`date +"%Y.%m.%d"\`"`