検索で論理ORを使用する方法は?


12

bashシェルでlsは、論理OR機能を使用できます(もちろん、私も使用できますls name1 name2が、実際の例はより複雑です)。

ls @(name1|name2)

これを使用してこれを行う方法はありfindますか?

私の素朴な実装:

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

機能しません(何も出力しません)


4
マンページのOPERATORSセクションを読みましたfindか?
Steeldriver、2015

回答:


19

-o論理的に使用できます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.