찾기에서 논리 OR을 사용하는 방법?


12

bash 셸 ls에서 논리 OR 기능을 사용할 수 있습니다 (물론 할 수도 ls name1 name2있지만 실제 예제는 더 복잡합니다).

ls @(name1|name2)

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

내 순진한 구현 :

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

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


4
맨 페이지 의 OPERATORS섹션 을 읽었습니까 find?
스틸 드라이버

답변:


19

-ological에 사용할 수 있습니다 OR. 그러나 모든 find술어에는 논리적 값이 있으므로 일반적 OR으로 괄호와 함께 항목 을 그룹화해야합니다 . 그리고 괄호는 껍질에도 의미가 있기 때문에 탈출해야합니다.

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

5

질문에 대답하기 위해 -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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.