논리 OR 함수는 bash 쉘에서 ls
다음과 같은 방법으로 사용할 수 있습니다(물론 나도 이 작업을 수행할 수 있지만 ls name1 name2
실제 예는 더 복잡합니다).
ls @(name1|name2)
를 사용하여 이를 수행할 수 있는 방법이 있습니까 find
?
내 순진한 구현 :
find . -maxdepth 1 -name @("name1"|"name2")
작동하지 않습니다(아무것도 출력하지 않음)
답변1
-o
for 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