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 시스템에서도 사용할 수 있다고 가정할 수는 없습니다.
마지막으로 나는 그 점을 언급하고 싶다.유닉스 철학동시에 모든 작업을 수행하려고 하는 하나의 큰 단일 실행 파일을 사용하는 것보다 여러 원본 프로그램의 조합을 선호합니다.
귀하의 경우 파일 시스템을 스크랩하고 스트림에서 정규식을 일치시키는 것은 두 가지 별도의 작업입니다. 각각을 별도의 프로그램으로 처리하는 것이 일반적입니다.