2017-01-30 1 views
-2

많은 파일이있는 디렉토리에서 알 수없는 파일의 패턴을 grep하려고합니다. 내가 그 작업이 너무 많은 대역폭을 소비하기 때문에 직접 그렙를 사용할 수없는 파일의 매우 큰 폴더에 파일을 찾고 있어요 때문에bash는 grep을 사용하여 find를 출력합니다.

$ grep 0RY7HYLA in ./*8017*/*diag* 

: 나는 일반적으로 다음과 같은 코드를 실행하는 것입니다. grep과 함께 find 명령을 사용해야합니다. 나는 즉

find ./*8017*/*diag* -maxdepth 3 -type f -name output_log -exec egrep -l '0RY7HYLA' {} \; | grep 0RY7HYLA 

위의 코드 즉이 코드를 실행로부터 출력이없는 작동하지 않습니다 grep 명령에 파이프로 입력으로 find 명령의 출력을 사투를 벌인거야. 파이프 앞의 코드 만 실행하면 파일과 디렉토리가 출력되지만 grep은 출력되지 않습니다.

if find ./*8017*/*diag* -maxdepth 3 -type f -name output_log -exec egrep -l '0RY7HYLA' {} \; ; then grep 0RY7HYLA ???????? ; fi 

이 행할 :

둘째 나는, 조건문이 넣어 뭔가를해야합니까?

+0

원하는 출력은 무엇입니까? 두 줄과 일치하는 줄을 인쇄하려고합니까? –

+0

"위의 코드는 작동하지 않습니다." - 왜 그렇게 말하니? 예기치 않은 결과가 반환되었거나 예상 한 결과가 반환되지 않았습니까? 아니면 오류가 표시되었을 수 있습니까? – Aaron

+0

나는 그 진술에 더 나은 설명을 추가했다. – stevo

답변

0

내가 그것을 이해하면 제대로 나는 다음과 같은 명령으로 해결 될 수있는 무엇을하려고 생각 :

find . -type f -print0 | xargs -0 grep "0RY7HYLA" 

이 현재 디렉토리 아래의 파일에 "0RY7HYLA"의 발생을 인쇄합니다.

+0

'xargs'를 사용하는 대신'-exec grep '0RY7HYLA'{} +'를 사용하지 않는 것이 어떨까요? –

+1

나는 그것을 찾을 것이다, 나는 -exec 플래그 나 {} +에 대해서 모른다. 약속 주셔서 감사합니다! – Pol