일부 파일 형식을 제외한 모든 파일을 grep하고 싶습니다?


36

grep몇 가지 파일 형식을 제외하고 지정된 폴더 내에서 파일을 재귀 적으로 파일 하는 방법은 무엇입니까?

예를 들어, 내 작업 공간 폴더에서 문자열을 찾고 있지만 SQL 파일 내부에서 검색을 끝내고 직렬화 된 문자열을 생성합니다.

따라서이 경우 grepSQL 파일을 제외한 작업 공간 폴더 를 원합니다 .

가능하다면 원 라이너를 찾는 것이 좋습니다.


5
Linux 및 Unix 및 유닉스 유사 프로그램에는 실제로 원하는 방식으로 "파일 형식"이 없습니다. 파일 이름에 ".c"또는 ".txt"또는 ".sql"접미사가있는 것은 규칙에 의해서만 가능합니다. 접미사는 Windows 스타일의 "확장자"도 아니므로 SQL 또는 텍스트 또는 C 소스 코드가 존재한다는 표시가 훨씬 적습니다. 파일 내부.
Bruce Ediger

답변:



8

이렇게하면 .sql 및 .txt 파일이 제외됩니다.

find /some/dir -type f ! -name '*\.sql' ! -name '*.txt' -print0 | xargs -0 grep 'foobar'

그러나 ack 가 당신이하려는 일에 훨씬 좋은 도구 인 것처럼 들립니다 .

ack -a --nosql 'foobar' /some/dir

죄송합니다. 'ack'부분이 보이지 않아 답변에 넣었습니다. 이제 삭제되었습니다.
Chance

이진 파일 을 포함 하는 다른 사용자 노트ack - a --nobinary
Michael Mrozek

파일 이름 패턴의 백 슬래시는 필요하지 않습니다.
Kusalananda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.