grep을 사용하여 정규식 패턴이 포함된 파일 찾기

grep을 사용하여 정규식 패턴이 포함된 파일 찾기

정규식 패턴이 포함된 모든 파일을 찾는 방법이 있습니까? 참고로, grep을 의미하는 것은 아닙니다.사용정규식이란 정규식 문자열이 포함된 파일을 찾는 것을 의미합니다.

즉, 이것은 아닙니다:

grep -E '\S+\s+\d+' $file

그러나 다음과 같은 것 :

grep -E '<something here>' $file

여기서 $file에는 실제로 여러 정규식 패턴이 포함되어 있습니다.

업데이트(명확화를 위해):

해당 패턴( )을 찾고 싶지 않고 \S+\s+\d+, 다음 내용이 포함된 파일을 찾고 싶습니다.어느정규식 패턴이 포함되어 있습니다.

답변1

grep예, 검색 만 하면 됩니다대신 정규 표현식을 사용하세요.

이 옵션의 목적은 다음과 같습니다 -F.

grep -F -- '\S+\s+\d+' "$file"

이 문자열을 포함하는 현재 디렉터리 안이나 아래의 모든 파일을 찾으려면(일치하는 줄과 함께 일치하는 항목이 포함된 각 파일의 경로 이름을 출력합니다):

find . -type f -exec grep -F '\S+\s+\d+' /dev/null {} +

또는 항상 인쇄 grep해야 -H하는 일치 항목이 포함된 파일의 경로 이름을 사용하십시오.

find . -type f -exec grep -H -F '\S+\s+\d+' {} +

또는 일치하는 줄이 아닌 파일의 경로 이름을 찾으십시오.

find . -type f -exec grep -l -F '\S+\s+\d+' {} +

도착하다하다이 파일을 처리하려면 다음을 사용하십시오.

find . -type f -exec grep -q -F '\S+\s+\d+' {} \; -exec sh -c '
    for pathname do
        # code that uses "$pathname" here
    done' sh {} +

비어 있지 않은 텍스트 문자열은 모두 정규식이므로 검색 파일에 대해 자세히 알지 않고는 "모든 정규식"을 검색할 수 없습니다. 우리가 보고 있는 파일이 JSON 파일이고 정규 표현식이 특정 키의 값으로 나타날 수 있다는 것을 알고 있다면 해당 키가 있는 특정 파일을 쉽게 감지할 수 있습니다.

관련 정보