"TRACE_WANTED" 플래그를 사용하는 파일을 찾으려고 합니다. 그러나 파인더가 .c 및 .h에서 이 플래그를 검색하는 것을 원하지 않습니다. 파인더를 *.c에서 제외하려면 어떻게 해야 합니까? 및 *.h 파일.
이것은 내가 사용하는 일반적인 명령입니다.
find ./ -iname *.c -exec grep -iHrn TRACE_WANTED {} \;
답변1
GNU는 grep
내장된 재귀 검색에서 glob을 제외할 수 있습니다. 노력하다:
grep -iHrn --exclude='*.c' --exclude='*.h' TRACE_WANTED
이는 명령과 마찬가지로 현재 디렉터리에서 시작하여 재귀적으로 검색합니다 find
. 모든 파일 *.c
을 제외합니다 *.h
.
답변2
*.c 및 *.h 파일을 제외하고 TRACE_WANTED라는 단어가 포함된 파일을 찾는 것뿐이라면 다음을 사용할 필요도 없습니다.찾다, grep만으로도 작업을 수행할 수 있습니다.
grep -r --exclude={"*.c","*.h"} TRACE_WANTED ./
기본적으로 bash에서는 따옴표가 필요하지 않지만 zsh에서는 필요합니다.
답변3
find . ! -name '*.[ch]' -type f -exec grep -l TRACE_WANTED {} +
grep
또는 재귀 검색을 사용할 수 있는 경우 -r
:
grep -lr --exclude='*.[ch]' TRACE_WANTED