![GNU는 -print를 사용하여 논리 연산자를 찾습니다.](https://linux55.com/image/187256/GNU%EB%8A%94%20-print%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%85%BC%EB%A6%AC%20%EC%97%B0%EC%82%B0%EC%9E%90%EB%A5%BC%20%EC%B0%BE%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
다음 파일 레이아웃을 고려하십시오.
.
├── dir_a
│ └── file_1
└── file_2
옮기다
find . \( -name dir_a -prune \) -a -print
주어진
./dir_a
하지만 인용하다
find . \( -name dir_a -prune \) -o -print
주어진
./file_2
논리 OR(-o)에 논리 AND(-a)의 결과가 포함되지 않는 이유는 무엇입니까?
답변1
~에서사양 찾기(GNU 찾기 매뉴얼비슷한 문구가 있음):
표현-o 표현
기본 교대 또는 연산자. 첫 번째 표현식이 true이면 두 번째 표현식을 평가하면 안 됩니다.
dir_a
-name
일치하고-prune
항상 true 이므로 Find는 에\( -name dir_a -prune \)
도달할 수 없습니다 .-print
dir_a
file_1
dir_a
Find 에서는 잘라내기 때문에 고려하지 않아 인쇄되지 않습니다.file_2
테스트가
-name
일치하지 않으므로\( -name dir_a -prune \)
false이고 Find가-print
기본에 도달합니다.
답변2
귀하의 표현은 실제로 다음과 같습니다.
(잘린 dir_a와 일치하지만 아무 작업도 수행하지 않음) 또는 (다른 모든 항목 인쇄)
왼쪽에 있는 내용을 인쇄하려면 대괄호 안에 -print를 포함해야 합니다.