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