저는 리눅스를 처음 접했습니다. 라는 파일을 찾고 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
와 함께 사용해야 합니다 .-exec
xargs
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
오류 메시지 억제