검토해야 하는 로그 파일 세트가 있고 동일한 파일에서 특정 문자열을 즉시 검색하고 싶습니다. 이것이 가능합니까? 현재 내가 사용하고 있는
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
. 예를 들면 다음과 같습니다.