동일한 문자열이지만 여러 파일을 동시에 grep하는 방법은 무엇입니까?

동일한 문자열이지만 여러 파일을 동시에 grep하는 방법은 무엇입니까?

검토해야 하는 로그 파일 세트가 있고 동일한 파일에서 특정 문자열을 즉시 검색하고 싶습니다. 이것이 가능합니까? 현재 내가 사용하고 있는

grep -E 'fatal|error|critical|failure|warning|' /path_to_file

어떻게 그것을 사용하고 동시에 여러 파일에서 문자열을 검색할 수 있습니까? 이것이 스크립트로 작성되어야 하는 경우 누군가 이를 수행하기 위한 간단한 스크립트를 제공할 수 있습니까?

답변1

grep -E 'fatal|error|critical|failure|warning|' *.log

답변2

더 쉬운 경우 각 파일을 개별적으로 지정할 수 있습니다.

grep -E 'fatal|error|critical|failure|warning' file1.log file2.log 

답변3

다음과 같이 사용할 수 있습니다.

find . -name "*.log" | xargs grep -E 'fatal|error|critical|failure|warning|'

.log그러면 확장명이 있는 모든 파일을 찾아 grep명령을 적용합니다.

답변4

지가르 간디의 대답별표 와일드카드 문자의 사용을 보여줍니다. 더 많은데, 보시면 됩니다여기또는 man 7 glob.

내가 유용하다고 생각한 것 중 하나는 범위를 []. 내가 작업하는 시스템은 순차적으로 번호가 매겨진 로그 파일을 생성하므로 product.log.1 product.log.2 ... product.log.200예를 들어 단일 명령으로 3~4개의 연속 파일(그 이상은 아님)을 grep하는 것이 편리합니다. 그래서 이거

grep 'whatever' product.log.[5-7]

Product.log로 끝나는 모든 파일에 대한 Grep입니다. 5, 6 또는 7. 와일드카드는 끝에 올 필요가 없으므로반딧불이의 대답다음과 같이 단순화될 수 있다

grep -E 'fatal|error|critical|failure|warning' file[1,2].log

또한 이러한 와일드카드는 다른 명령에서도 사용할 수 있습니다 cp. 예를 들면 다음과 같습니다.

관련 정보