티스토리 뷰

반응형

grep -rl 검색할문자열 *
grep -inr "패턴매칭" // 대소구분없이
grep [찾고 싶은 문자] * -r
이렇게 하면 현재 디렉토리에 있는 문서와 하부 디렉토리 전부를 끍어서 검색해줍니다.

----------------------------------------------------
find . -name \'*.c\' -exec grep recursive {} \\; -print

(.)은 현재방으로 현재방에서 (find)찾아라. 파일명(-name)이 (*.c) 즉 확장자가 c인 파일을 찾아라. 그리고 만약에 찾았으면 (-exec)는 실행하라, grep recursive는 recursive라는 단어를 파일내용중에서 추출하라는 명령이죠.
따라서 확장자가 c인 파일 내용중 recursive라는 단어가 든 파일의 부분 내용을 출력합니다. {} \\; 이것은 -exec를 사용할때 따라오는 관례라고나 할까요. ^^

끝으로 위의 결과물을 -print로 화면에 출력하라는 의미입니다.

참고로
find . -name \'*.c\' -exec grep recursive {} \\; -print > a.txt 하면 모든 결과물을 a.txt에 저장을 해 준답니다. 다양하게 응용해보심 재미있을 겁니다.

find / \\(-name \'*.tmp\' -o -name \'*.txt\'\\) -exec rm {} \\;
==> 이건 / 이하 모든 디렉토리에서 확장자가 tmp, txt인 모든 파일을 삭제하는 명령입니다. -o는 OR로 둘중에 하나라도 있으면 참이죠.


{} 은.. find 가 찾은 \'파일\' 을 가리키는 것입니다.
\\; 은...
find 가 -exec 옵션 뒤에 오는 명령이 어디까지가 명령인지 구분하기 위해서 \'명령의 끝\' 을 명시하는 것입니다.

find . -name foo -exec rm {} -print

와 같이 하면, find 는 찾은 파일에 대해 실행해야 할 명령이 rm foo -print 인지 rm foo 인지 알 수 없겠죠? ^^;

그리고, \\(백슬래쉬) 문자는 쉘이 ; 을 \'명령의 끝\' 처럼 해석하는 것을 방지하여
; 문자가 find 에 제대로 전달되도록 하기 위해서 \\ 를 앞에 붙여 준 것이구요.

find ./ -name "*.jsp" -exec grep '문자열' {} \; -print


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함