find와 grep을 이용해서 파일안 텍스트 검색

일반적으로 리눅스에서 특정 검색어를 찾을때
find와 grep을 사용한다.

find
현재 폴더의(또는 특정 폴더) 파일 리스트 출력
ex)
find . -name "*.php" => 확장자가 php인 파일 출력
find /html/ -type d => 디렉토리만 출력

grep
파일안의 텍스트를 검색해서 출력
ex)
grep -n 'hello' =>hello가 들어있는 파일의 위치와 줄번호 출력
gerp -r 'hello' => 현재 폴더와 하위폴더에서 hello가 들어있는 위치를 출력

find + grep
특정 파일이나 폴더를 검사해 특정 검색어가 있는 부분을 출력
ex)
find ./ -name '*.htm' | xargs grep -n 'hello'

find와 grep의 조합은 특정 파일이나 폴더안에 있는 검색어를 출력할 때 사용된다.
특정 파일이나 폴더가 아닌 전수 검사를 할때는 find를 사용하지 않고 그냥 grep에 -r 스위치를 적용하면 된다.
물론 퍼포먼스에 차이는 있겠지만(없으려나...)

개인적으로는 특정 파일보다는 전체파일중에서 검색어를 검사하는 일이 더 많았다.

정리하면서 find가 아닌 ls를 사용해도 될것 같아서 확인해보니
사용해도 되지만 ls의 경우 특정 조건의 폴더가 검색되어 출력이 된다면 
그  안에 하위폴더가 있을때 그 조건에 맞지 않아도 다 출력된다.


덧글

댓글 입력 영역