我已经通过Google和StackOverflow进行了搜索,但似乎无法找到这个问题的答案。这可能是因为我正在搜索错误的条款,但希望有人可以提供帮助!
我有以下类似的文件结构:
/logs/ServiceA/Prod/2017/10/01/11/logFileForHour
/logs/ServiceA/Prod/2017/10/01/12/logFileForHour
/logs/ServiceA/Prod/2017/10/01/13/logFileForHour
/logs/ServiceB/SubService1/Prod/2017/10/01/12/logFileForHour
/logs/ServiceC/SubService1/Prod/Mirror/2017/10/01/12/logFileForHour
/logs/ServiceC/SubService1/Beta/2017/10/01/12/logFileForHour
每个小时的文件夹包含运行该服务的所有主机的日志聚合。这些每小时文件夹聚合到每日文件夹中,这些文件夹聚合到每月文件夹中,依此类推。然后,日志由Stage(Prod / Demo / Dev)聚合,然后由Service / SubService聚合。
我需要一种方法来grep所有PROD服务和子服务中的公共标识符,并且如果可能的话,我想尝试使用单个grep执行此操作。我知道请求的时间。
理想情况下,如果我想在2017年10月10日的12:00时间内获取所有服务和子服务的所有产品日志,我可以使用/logs/*/Prod/*/2017/10/01/12/*
的文件路径,但这仅适用如果每个星号都有一个文件夹,实际上第一个星号可以是1个或多个文件夹,第二个星号可以是0个或更多个文件夹。
非常感谢您提供的任何帮助!
答案 0 :(得分:0)
您可以尝试以下内容:
find logs -type d -name Prod | xargs grep -r SEARCHSTRING
但要注意我无法测试它......
澄清后编辑:
find logs -type f -path '*/Prod/*' -a -path '*/2017/10/01/12/*'
,查找匹配Prod
的路径的所有文件后代,并匹配您要查找的日期/小时路径(添加grep)