단일 내장 명령을 사용하여 하위 디렉터리의 파일에서 하위 문자열을 찾으시겠습니까?

단일 내장 명령을 사용하여 하위 디렉터리의 파일에서 하위 문자열을 찾으시겠습니까?

Windows에서 모든 하위 디렉터리의 모든 파일에서 문자열을 찾으려면 다음을 수행합니다.

findstr /C:"the string" /S *.h

find그러나 Linux(Ubuntu와 같은)에서는 xargs, , 및 관련 파이프 명령 이외의 다른 방법을 찾지 못했습니다. grep예는 이 페이지에 있습니다.하위 디렉토리를 재귀적으로 grep하는 방법은 무엇입니까?) 그러나 내 질문은 다릅니다.단일 내장 명령쉘 스크립트를 작성하지 않고도 이 마법이 작동합니까?

답변1

GNU grep을 사용하면 하위 디렉터리를 통한 재귀 검색이 가능합니다.

grep -r --include='*.h' 'the string' .

답변2

grep -r searchpattern /path/to/start/in

/path/to/start/in/" " 는 .현재 디렉토리를 나타냅니다.

답변3

아니, find -name \*.h -print0 | xargs -0 grep -l 'the regex'그게 바로 마법이에요.

답변4

당신은 가지고 있습니까?단일 내장 명령이 마법이 작동해서...?

현학적인 사람이 되십시오.아니요, 그러한 명령이 존재한다고 가정할 수 없습니다..

Unix에는 다양한 구현이 있으며 각각 고유한 특성을 가지고 있습니다. POSIX, Common Ground (그리고 Unices 표준에 가장 가까운 것)해당 옵션이 지정되지 않았습니다.grep.

다른 답변에서 언급했듯이 GNU 구현에는 grep귀하의 요구에 맞는 비표준 옵션이 있습니다. 이 특정 구현은 Linux 시스템에서 일반적일 수 있지만 모든 Unix, 심지어 일부 Linux 시스템에서도 사용할 수 있다고 가정할 수는 없습니다.

마지막으로 나는 그 점을 언급하고 싶다.유닉스 철학동시에 모든 작업을 수행하려고 하는 하나의 큰 단일 실행 파일을 사용하는 것보다 여러 원본 프로그램의 조합을 선호합니다.

귀하의 경우 파일 시스템을 스크랩하고 스트림에서 정규식을 일치시키는 것은 두 가지 별도의 작업입니다. 각각을 별도의 프로그램으로 처리하는 것이 일반적입니다.

관련 정보