찾기를 사용하여 내부에 하나 이상의 키워드가 포함된 파일을 검색하고 보고합니다.

찾기를 사용하여 내부에 하나 이상의 키워드가 포함된 파일을 검색하고 보고합니다.

다음 조건에서 파일을 보고하기 위해 find를 사용하고 싶습니다.

  1. 파일에 "직렬화 가능"이라는 단어가 포함된 경우
  2. 파일에 "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

관련 정보