특정 이름과 내용이 포함된 파일을 찾으려면 찾기를 사용하세요.

특정 이름과 내용이 포함된 파일을 찾으려면 찾기를 사용하세요.

저는 리눅스를 처음 접했습니다. 라는 파일을 찾고 start.sh검색을 시작 /하고 오류를 억제하려고 합니다. 동시에 파일에는 sys_home.

이것이 맞는지 알려주십시오.

find / -name start.sh | grep "sys_home" *

답변1

파이프( |)를 연결 하면 grep에서 읽으므로 stdin파일 이름 매개변수( )를 추가할 필요가 없습니다 *.

find / -name start.sh | grep "sys_home"

그러나 예상대로 작동하지 않습니다! find이름 목록이 출력되며 파일 내용이 아닌 이 목록 내에서 일치를 grep시도합니다 !sys_home


(대체 ) find와 함께 사용해야 합니다 .-execxargs

find / -name 'start.sh' -exec grep -q 'sys_home' {} \; -print

2>/dev/null오류 메시지를 표시하지 않도록 추가됨

find / -name 'start.sh' -exec grep -q 'sys_home' {} \; -print 2>/dev/null

대안으로 grep재귀 패턴( r)을 직접 사용할 수도 있는데, 이것이 더 쉽다고 생각합니다.

grep -rls 'sys_home' --include='start.sh' /
  • -r재귀 모드
  • --include='start.sh'글로브 패턴과 일치하는 파일만 찾기start.sh
  • -l일치하는 줄은 제외하고 파일 이름만 인쇄합니다.
  • -s오류 메시지 억제

관련 정보