리눅스 find와 grep의 차이
find와 grep은 목적은 특정 파일을 찾는데 그 의의가 있는 명령어다
그렇다면 왜 굳이 이거 두개가 분리되어있을까?
find는 어떠한 기준을 제시하여 거기에 맞는 파일을 출력해준다
예시는 이렇다
find . -size +100M 라고 제시하면 리눅스에서는 "현재" 디렉토리에서 100메가 이상의 파일을 찾아준다
grep의 예시는 이렇다
grep "test" . 라고 실행하면 리눅스에서는 "현재" 디렉토리에서 test라는 문자열을 가진 파일을 전부 검색해준다
Q. 그렇다면 find로는 문자열 패턴을 검색 할 수 없나요
A.
이렇게 예시를 갈라두면 혹시나 처음보는 사람이 엥? 되는데? 라고 생각할 수 있으니 사족을 붙이자면 find와 grep을 혼용하여
사용하면된다는것이다
find . -exec grep -l "test" {} + 라고 치면 test라는 문자열을 가진 파일을 출력해준다.
Q. 엥 그러면 grep "test"와 ind . -exec grep -l "test" {} + 의 차이점은 뭐죠?
A. 출력되는 내용이 다릅니다.
우선 아래와 같은 파일이 있다고 가정해봅시다.
memo1.txt
test 메세지 입니다.
memo2.txt
test 코드입니다.
memo3.txt
text 파일입니다.
find . -exec grep -l "test" {} + 을 실행하면
memo1.txt
memo2.txt
grep "test"라고 검색하면
test 메세지 입니다.
test 코드입니다.
두개의 차이점이 확느껴지지않는가?
뭐 2개가 합쳐진거지만 사소한 찐빠는 넘어가도록 하자
끗