----------------長い話を短く----------------

----------------長い話を短く----------------

同様の検索を実行するときに find コマンドの後に - パラメーターを追加すると、find -type dそのパラメーターがない場合よりも多くの結果が検索されます。print0find -print0 -type d

ベストアンサー1

シェル(そしてC、C ++、および派生言語)で&&and演算子を知っている場合はそれを知っています。||-a-ofind

記憶を復活させる:

シェルでは、

コマンド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無視されます。

だからそこにあります。

おすすめ記事