일부 텍스트의 소스 파일을 어떻게 grep 할 수 있습니까?


8

현재 두 가지 명령을 사용하고 있다면 더 좋은 방법이 있어야합니다.

wim@wim-acer:~/ffmpeg$ find . -name "*.h" -print0 | xargs -0 grep -i invalid\ preset
wim@wim-acer:~/ffmpeg$ find . -name "*.c" -print0 | xargs -0 grep -i invalid\ preset

1
않는 -name '*.[ch]'일을?
glenn jackman

답변:


10

ack (또는 데비안 / 우분투에서는 ack-grep)은 버전 제어 또는 바이너리와 같은 비 소스 파일을 무시합니다. 매우 유용한.

위와 같이 .c 및 .h 파일 만 검색하려면

ack-grep -i --cc "invalid preset"

--cc(긴 형태입니다 --type cc) 단지가 .c .H & .xs 파일을 살펴 봅니다. 전체 파일 형식 목록은으로 볼 수 있습니다 ack-grep --help type. 대부분의 경우 --type일반적으로 검색 할 파일과 바이너리, 백업 및 버전 제어 파일과 같이 기본적으로 표시되지 않는 파일 만 있기 때문에 특별히 필요 하지는 않습니다.


5

grep프로그램 자체는 재귀 적으로 검색하고 또한 특정 파일을 검색하는 옵션을 허용 할 수 있습니다. 다음은 두 find명령에 해당 합니다.

grep -Ri --include=*.[ch] invalid\ preset .

내가 괄호를 제거했을 때 이것은 나를 위해 일했다
Mike

1

find 명령은 grep 자체를 호출 할 수 있습니다.

find . \( -name "*.c" -o -name "*.h" \) -exec grep -i "invalid preset" {} \; -print

및 이들의 변형.


명백한 변형으로 변경되었습니다. ;-)
Keith

0

나는 당신에게 이와 같은 것을 추가 할 수 있습니다 ~/.bashrc

alias cppgrep='grep -Ri "--include=*.[hc]" "--include=*.cpp" "--include=*.hpp"'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.