2017-10-05 2 views
1

Google과 StackOverflow를 통해 검색했지만이 질문에 대한 답변을 찾을 수없는 것 같습니다. 나는 잘못된 용어를 찾고 있기 때문에 그럴 수도 있습니다. 그러나 누군가가 도움을 줄 수 있기를 바랍니다.Grep 특정 하위 폴더 그룹의 파일에 대해 재귀 적으로

/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별로 집계합니다.

모든 PROD 서비스와 하위 서비스에서 공통된 식별자로 grep하는 방법이 필요하며 가능하다면 단일 grep로 시도하고 싶습니다. 나는 요청이 들어간 시간을 알고있다.

/logs/*/Prod/*/2017/10/01/12/*의 파일 경로를 사용할 수 있다면 이상적이다. 10 월 10 일 12:00시에 모든 서비스 및 서브 서비스의 모든 로그를 원한다면 이상적이다. 2017,하지만 이것은 별표가 하나 인 폴더가있는 경우에만 작동합니다. 실제 별표는 첫 번째 별표의 경우 1 개 이상의 폴더이고 두 번째 별표의 경우 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 추가)

+0

초기 수정에 GUDO를 제공해 주셔서 감사합니다. 내가 뭘하려고하는지 정확하게 반영하도록 내 질문을 업데이트했습니다. 나는 내가 원하는 시간을 정확히 알고있다. 그래서 나는 그 시간에 해당하지 않는 로그를 통해 grep하지 않을 것이다. –

+0

물론, 나는 단지 당신이 여러개의 디렉토리를 먼저 매치시켜야한다고 생각했다. update 대답을보십시오, find -path는 당신이 필요로하는 것처럼 보입니다. –

+0

GUDO를 보내 주셔서 감사합니다. –