![find 명령에서 중복된 -exec 표현식을 제거하는 방법은 무엇입니까?](https://linux55.com/image/161747/find%20%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%20%EC%A4%91%EB%B3%B5%EB%90%9C%20-exec%20%ED%91%9C%ED%98%84%EC%8B%9D%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
find
를 사용하여 여러 파일 형식을 검색하는 명령이 있습니다 grep
. 예를 들어 디렉터리를 제외 하고 파일에서 .js
문자열을 검색하려면 다음을 입력하면 됩니다..jsx
foo
dist
find . -path "./dist" -prune -or -iname "*.js" -exec grep "foo" {} + -or -iname "*.jsx" -exec grep "foo" {} +
-exec
각 파일 유형에 대해 반복되지 않도록 이 명령을 다시 작성하는 방법이 있습니까 ? 나는 노력했다
find . -path "./dist" -prune -or -iname "*.js" -or -iname "*.jsx" -exec grep "foo" {} +
그러나 이들 모두는 .jsx
파일만 .js
검색 하며 .jsx
.
답변1
-or
우선순위는 (기본 커넥터)보다 낮 -and
으므로 분리의 "우선순위"를 명시적으로 높여야 합니다.
find . -path "./dist" -prune -or \( -iname "*.js" -or -iname "*.jsx" \) -exec grep "foo" {} +