同様の検索を実行するときに find コマンドの後に - パラメーターを追加すると、find -type d
そのパラメーターがない場合よりも多くの結果が検索されます。print0
find -print0 -type d
ベストアンサー1
シェル(そしてC、C ++、および派生言語)で&&
and演算子を知っている場合はそれを知っています。||
-a
-o
find
記憶を復活させる:
シェルでは、
コマンド1 && コマンド2
走るcommand1
そして、もしそうなら(command1
)正常に(シェル)が実行されます。command2
。
コマンド1 || コマンド2
走るcommand1
そして、もしそうなら(command1
) 失敗すると(シェル)が実行されます.command2
。
コンパイル可能な言語では
式1 && 式2
評価するexpr1
。その場合(expr1
)はfalse(ゼロ)と評価され、その値を式全体の値として返します。そうでなければ(expr1
真(ゼロ以外)の値として評価されます)expr2
これを全式の値として返します。
式1 || 式2
評価するexpr1
。その場合(expr1
)は真(ゼロ以外)の値として評価され、これは式全体の値として返されます。そうでなければ(expr1
偽(0)と評価)expr2
これを全式の値として返します。
式の合計値を決定するために必要な値を持つ項を必要とせずにブール式を評価できるため、これを「段落評価」と呼びます。
から引用検索(1)、
GNUは、find
優先順位規則(演算子のセクションを参照)に従って左から右に与えられた式を評価し、結果がわかるまで(左はfalse)、各与えられたファイル名にルートを持つディレクトリツリーを検索します。そしてジョブに適用可能または)、find
次のファイル名に移動します。
⋮
表現方式
式はテスト(真または偽の値を返す)と演算(副作用があり、真または偽の値を返す)で構成され、両方とも演算子で区切られます。 -そして演算子が省略されたとします。
⋮
⋮このセクションは次のとおりです。行動指摘-印刷ほとんどの操作と同様に、
常に真の値が返されます。オペレーター
⋮
式1 式2
式1-ㅏ式2
式1-そして式2 ··············································· ········································POSIX規格に準拠していないそして;式2次の場合は評価されません。式1偽です。
式1- モールド式2
式1- または式2 ··············································· ········································POSIX規格に準拠していないまたは;式2次の場合は評価されません。式1それは真実だ。
これ公開グループ仕様find
同様の言葉は次のとおりです。
これ探すユーティリティは、ディレクトリ階層を繰り返しダウンして、見つかった各ファイルのオペランドセクションで説明されている基本要素で構成されるブール式を評価する必要があります。
⋮
オペランド
⋮
-印刷デフォルトは常にtrueと評価する必要があり、現在のパス名が標準出力に書き込まれます。
⋮
基本色は、次の演算子を使用して組み合わせることができます(優先順位が下がる順序で):
⋮
表現する [-ㅏ] 表現する基本項目の組み合わせ、AND 演算子は、2 つの基本項目の並置によって暗黙的またはオプションで明示的です。-ㅏオペレーター。最初の式がfalseの場合、2番目の式を評価しないでください。
表現する - モールド 表現する基本シフトまたは演算子。最初の式がtrueの場合、2番目の式を評価しないでください。
どちらの文書も次のように言います。 「そうでなければ表現する存在する、-印刷表現の手段として使用する必要があります。 」
----------------長い話を短く----------------
だから、
find -type d
等しい
find -type d -print
これは次のとおりです。
find -type d -a -print
意味は、
- 各ファイルについて
- 評価
-type d
テスト。 - trueの場合(つまり、現在の「ファイル」がディレクトリの場合)、ジョブは
-print
評価(実行)されます。
- 評価
しかし、、
find -print -type d
等しい
find -print -a -type d
意味は、
- 各ファイルについて
-print
作業評価(実行)(つまり、これが起こりますすべてのファイルについて)。- true(常に
-print
)の場合、-type d
テストは評価されます。 - また、コマンドの終わりなので、テスト結果は
-type d
無視されます。
だからそこにあります。