인프런 커뮤니티 질문&답변

이윤정님의 프로필 이미지

작성한 질문수

리눅스 입문 - 개념으로 탄탄히!!

파일 검색

find -name과 find | grep의 차이

해결된 질문

작성

·

224

0

안녕하세요 강사님, 질문 드릴 게 있습니다.

  • find | grep "conf"

  • find -name "*.conf" -print

강의 중에 위 두 가지 명령어가 매커니즘적으로 굉장히 다른 명령이라고 하셨는데, 이 부분이 잘 와닿지가 않습니다..

결국은 "conf"라는 키워드를 가진 파일을 찾는다는 같은 목적을 가진 명령어인 것 같은데 어떤 식으로 다른 건지 알 수 있을까요?

답변 2

1

런잇(ProgCoach4U)님의 프로필 이미지
런잇(ProgCoach4U)
지식공유자

안녕하세요 이윤정님.

말씀하신 대로 같은 목적으로 사용할 수 있는 명령입니다.
목적은 같지만 동작 방식이 다른 것을 말씀드렸던 것입니다.

첫번째 방식은 find 가 stdout으로 출력한 내용 중에서 "conf"를 검색해내는 방식입니다.
find를 실행한 프로세스가 stdout으로 출력을 하고, 이 출력 내용이 grep을 실행한 프로세스의 stdin으로 리디렉션되도록 파이프를 사용한 것입니다.

두번째 방식은 find 자체의 기능으로 이름에서 "*.conf"가 매치되는 파일의 이름을 stdout으로 출력하는 것입니다.
find 프로세스 하나에서 모든 것을 처리하게 되겠죠.

 

이 차이가 크다면 크고, 작다면 작다고 말할 수 있는데요..
둘의 차이를 알고 사용하는 것과 모르고 사용하는 것은 차이가 있을거라 생각합니다.
차이를 알고 사용해야 다른 부분에서도 활용하실 수 있으시겠죠?ㅎㅎ

 

그리고 AI 인턴의 답변 중에 틀린 부분이 있네요.
find | grep "conf" 명령이 파일의 내용을 검색하지는 않습니다.
find 가 출력하는 것(파일 목록)에서 "conf"를 검색할 뿐입니다.

참고하세요.

 

0

안녕하세요, 인프런 AI 인턴입니다.

질문하신 find | grep "conf"find -name "*.conf" -print 명령어의 차이에 대해 설명드릴게요.

  • find | grep "conf" 명령어는 find 명령어로 현재 디렉토리(및 그 하위 디렉토리들)에서 모든 파일과 디렉토리를 검색한 뒤, 그 결과를 grep "conf" 명령어로 넘겨 conf가 포함된 행을 필터링합니다. 이 경우, 파일 이름뿐만 아니라 파일 내용, 디렉토리 이름 등 conf 텍스트가 포함된 모든 결과를 반환할 수 있습니다.

  • find -name "*.conf" -print 명령어는 현재 디렉토리 및 하위 디렉토리에서 확장자가 .conf인 파일 이름만을 찾아 그 리스트를 출력합니다. 여기서 -name "*.conf" 옵션은 파일 이름이 .conf로 끝나는 파일만을 명시적으로 검색하도록 지시하며, -print는 찾은 파일의 경로를 출력합니다.

결론적으로, find | grep "conf" 명령어는 더 넓은 범위(파일 이름, 내용, 디렉토리 이름 등)에서 conf를 검색하지만, find -name "*.conf" -print 명령어는 오직 .conf 확장자를 가진 파일 이름만을 대상으로 하여 더 정확하고 제한된 검색을 수행합니다. 따라서 사용 목적에 따라 적절한 명령어를 선택하게 됩니다.

원하는 답변을 찾으셨길 바랍니다. 추가 질문이 있으시면 언제든지 문의해주세요.