Linux는 주어진 이름에 문자열이 포함된 파일을 반복적으로 검색합니다.

Linux는 주어진 이름에 문자열이 포함된 파일을 반복적으로 검색합니다.

Linux 셸에서 내가 디렉토리에 있다고 가정하고 모든 하위 폴더에서 이름에 문자열이 있고 내부에 문자열이 있는 모든 파일을 /dir재귀적으로 찾고 싶습니다 . 파일 이름의 시작, 중간 또는 끝에 있을 수 있습니다. 어떻게 해야 하나요?name_stringcontent_stringname_string

나는 grep을 시도했다 :

grep -r content_string /dir/*name_string*

하지만 지금까지 나는 그렇게 운이 좋지 않았습니다.

감사해요!

답변1

빠른 수정을 위해 다른 방법만큼 효과적이지는 않더라도

find /dir -type f -name '*name_string*' -print0 | xargs -0 grep -l content_string

답변2

다음 OR 구문을 사용할 수 있다고 생각합니다.

grep -nriE '.*name_string.*|content_string' /dir

아니면 제가 일반적으로 하는 일을 하십시오. 즉 첫 번째 출력을 grep다른 출력으로 파이프하는 것입니다 grep.

grep -nriE '.*name_string.*' /dir | grep -nri 'content_string'

관련 정보