내가 확인한 내용은 다음과 같습니다.
find mydir -maxdepth 2 -name .project -or -name .classpath
출력을 제공합니다 :
mydir/.project
mydir/.classpath
그 동안에
find mydir -maxdepth 2 -name .project -or -name .classpath -exec echo {} \;
출력을 제공합니다 :
mydir/.classpath
발견된 항목이 1개만 나열됩니다. 이유는 무엇입니까?
xargs는 예상대로 작동합니다.
find mydir -maxdepth 2 -name .project -or -name .classpath | xargs -I {} echo {};
인쇄물:
mydir/.project
mydir/.classpath
내가 뭔가를 놓치고 있는 걸까 -exec?
답변1
표현식은 find기본적으로 술어(부울 조건)의 목록입니다. find표현식을 포함한 거의 모든 부울 컨텍스트에서 AND연산자가 OR. 우선순위 규칙을 명시적으로 설명하기 위해 몇 가지 괄호를 추가하면 두 번째 find표현식은 논리적으로 다음과 동일합니다.
( -name .project ) OR ( -name .classpath AND -exec echo)
원하는 동작을 얻으려면 다음이 필요합니다.
find mydir -maxdepth 2 \( -name .project -o -name .classpath \) -exec ... {} \;


