조회에서 논리적 OR을 사용하는 방법은 무엇입니까?

조회에서 논리적 OR을 사용하는 방법은 무엇입니까?

논리 OR 함수는 bash 쉘에서 ls다음과 같은 방법으로 사용할 수 있습니다(물론 나도 이 작업을 수행할 수 있지만 ls name1 name2실제 예는 더 복잡합니다).

ls @(name1|name2)

를 사용하여 이를 수행할 수 있는 방법이 있습니까 find?

내 순진한 구현 :

find . -maxdepth 1 -name @("name1"|"name2") 

작동하지 않습니다(아무것도 출력하지 않음)

답변1

-ofor logic 을 사용할 수 있습니다 OR. 그러나 모든 조건자에는 논리 값이 있으므로 일반적으로 항목을 그룹화하려면 괄호를 find사용해야 합니다 . OR괄호도 쉘에 의미가 있으므로 괄호도 이스케이프 처리해야 합니다.

find /some/dir -maxdepth 1 \( -name '*.c' -o -name '*.h' \) -print

답변2

귀하의 질문에 답변하려면 -o다음 옵션이 있습니다.

   expr1 -o expr2
          Or; expr2 is not evaluated if expr1 is true.

   expr1 -or expr2
          Same as expr1 -o expr2, but not POSIX compliant.

이와 같이:

$ find . -maxdepth 1 -name "name1" -o -name "name2"
./name1
./name2

관련 정보