目次

findコマンドの-pruneオプション

manページでは「true を返します。 処理対象がディレクトリである場合、 ディレクトリ内に入っていきません。」という説明で、いったいどういう効果なのかわかりにくい-pruneオプションについてのメモ。

「説明」の指定された式 (expression)

manページ説明にある「指定された式 (expression) を左から右の順で評価していきます。」が重要なポイントで、これでオプションによる結果が決まることになる。

findコマンドのexpression

findコマンドで/var以下からディレクトリを検索するが、logディレクトリより下を除外する場合は下記のように指定する。

$ find /var -type d -name log -prune -o -print

これはこのように実行されることになる。

command path expression-1 operator expression-2
find /var -type d -name log -prune -o -print
  1. pathを起点に検索を開始する。
  2. expression-1に合致した場合
    1. -pruneオプションの結果としてtrueが返されるがパスは出力されない
    2. operator以降の式の評価は行われない
  3. expression-1に合致しなかった場合
    1. expression-2に従いパスが出力される

これらの組み合わせにより「logディレクトリより下を除外」がされることになる。