해결된 질문
작성
·
224
0
안녕하세요 강사님, 질문 드릴 게 있습니다.
find | grep "conf"
find -name "*.conf" -print
강의 중에 위 두 가지 명령어가 매커니즘적으로 굉장히 다른 명령이라고 하셨는데, 이 부분이 잘 와닿지가 않습니다..
결국은 "conf"라는 키워드를 가진 파일을 찾는다는 같은 목적을 가진 명령어인 것 같은데 어떤 식으로 다른 건지 알 수 있을까요?
답변 2
1
안녕하세요 이윤정님.
말씀하신 대로 같은 목적으로 사용할 수 있는 명령입니다.
목적은 같지만 동작 방식이 다른 것을 말씀드렸던 것입니다.
첫번째 방식은 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
확장자를 가진 파일 이름만을 대상으로 하여 더 정확하고 제한된 검색을 수행합니다. 따라서 사용 목적에 따라 적절한 명령어를 선택하게 됩니다.
원하는 답변을 찾으셨길 바랍니다. 추가 질문이 있으시면 언제든지 문의해주세요.