아래 예를 참조하세요.
$ ls -1p
appledir/
applefile
orangedir/
orangefile
$ find . -type f -name apple\*
./applefile
$ find . -type f -name orange\*
./orangefile
$ find . -type f -name apple\* -o -name orange\*
./applefile
./orangedir
./orangefile
$ find . -type f \( -name apple\* -o -name orange\* \)
./applefile
./orangefile
$
예상대로 작동하려면 괄호가 필요하다는 사실에 놀랐습니다. 인수를 평가하기 위한 우선 순위 규칙을 내부화하지 않은 것 같습니다 find
.
필요할 때와 find
괄호를 사용하여 기본 항목을 명시적으로 그룹화하지 않을 때를 어떻게 쉽게 예측할 수 있습니까?
즉, 내가 상상할 수 있는 규칙은 무엇인가?find
끼워 넣다명령에 괄호를 추가합니까? 이를 통해 그룹화되지 않은 표현식을 평가하는 방법을 정확하게 예측할 수 있습니까?
답변1
~에 따르면문서,
암시적 으로
-a
(예: 나타나는 두 테스트 사이에 명시적인 연산자가 없는 경우) 또는 명시적으로 지정된 경우 이는 인쇄되지 않음-o
을 의미합니다 .find . -name afile -o -name bfile -print
afile
find
따라서 기본적으로 두 개의 "anded" 표현식을 괄호로 묶는 것을 상상할 수 있습니다 . 당신의
find . -type f -name apple\* -o -name orange\*
로 설명되었다
find . \( -type f -name apple\* \) -o -name orange\*