論理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