정규식 패턴이 포함된 모든 파일을 찾는 방법이 있습니까? 참고로, 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 파일이고 정규 표현식이 특정 키의 값으로 나타날 수 있다는 것을 알고 있다면 해당 키가 있는 특정 파일을 쉽게 감지할 수 있습니다.