私が確認したのは次の通りです:
find mydir -maxdepth 2 -name .project -or -name .classpath
出力は次のようになります。
mydir/.project
mydir/.classpath
その間
find mydir -maxdepth 2 -name .project -or -name .classpath -exec echo {} \;
出力は次のようになります。
mydir/.classpath
見つかったアイテムが 1 つだけリストされているのはなぜですか?
xargs は期待通りに動作します:
find mydir -maxdepth 2 -name .project -or -name .classpath | xargs -I {} echo {};
プリント:
mydir/.project
mydir/.classpath
について何か見逃しているのでしょうか-exec?
答え1
式は基本的に述語(ブール条件)のリストです。式findを含むほぼすべてのブールコンテキストでは、演算子が より優先されます。優先順位のルールを明示的に示すために括弧を追加すると、2番目の式は論理的に次の式と同等になります。findANDORfind
( -name .project ) OR ( -name .classpath AND -exec echo)
望ましい行動を得るためには、
find mydir -maxdepth 2 \( -name .project -o -name .classpath \) -exec ... {} \;


