다음 조건에서 파일을 보고하기 위해 find를 사용하고 싶습니다.
- 파일에 "직렬화 가능"이라는 단어가 포함된 경우
- 파일에 "serialVersionUID"라는 단어가 포함되어 있지 않으면 신고하세요.
그것은 다음과 같습니다:
find . -name "*.java" -exec grep "Serializable" {} \; <magic stuff here> grep "serialVersionUID" {} \; -print
그럼 내가 코카인을 하고 있는데 awk가 더 나을까요?
당신의 도움을 주셔서 감사합니다.
답변1
피연산자 -exec
의 계산 결과 find
는 다음과 같습니다.진짜명령이 성공하면(즉, 0을 반환)잘못된grep
실패하면(0이 아닌 값을 반환) 사용된 표현식의 일부로 성공/실패를 사용할 수 있습니다 find
.
find
' 피연산자 와 함께 !
하나의 grep 명령은 성공하고 다른 grep 명령은 실패한 파일을 검색할 수 있습니다.
find . -name "*.java" \
-exec grep -q "Serializable" {} ";" -a \
! -exec grep -q "serialVersionUID" {} ";" -a -print
이 -q
옵션은 grep
아무것도 인쇄되지 않아야 함을 나타냅니다. 반환 값에만 관심이 있습니다.
피연산자가 꼭 필요한 것은 아니지만 속도가 느려지지 않으며 -a
표현식이 더 복잡해지고 괄호가 필요할 때 사용하는 것을 좋아합니다.-o