-pruneオプションを使用するときにサブディレクトリを再帰的に見つける方法

-pruneオプションを使用するときにサブディレクトリを再帰的に見つける方法

findコマンドが実行されることを確認しました。いいえこのオプションを使用する場合は、-pruneサブディレクトリに配置します。 find がサブディレクトリに再帰するように指示して、一部の項目も無視するようにするにはどうすればよいですか?

/var/lib/foo特に、ディレクトリを検索しますが、名前のディレクトリを除外したいと思います.snapshot/

sudo find /var/lib/foo -prune -name '.snapshot'

上記の場合、.snapshotは正しく無視されますが、サブディレクトリには移動しません。ちなみに私はCentOS 6.3ホストのbashで作業しています。

答え1

以下を行う必要があります。

sudo find /var/lib/foo -name '.snapshot' -prune -o -print

「.snapshot」という名前以外のすべてのアイテムを印刷します。「.snapshot」がディレクトリの場合、ディレクトリには入りません。

なぜ? 「-prune」はジョブ(「-print」は別のジョブなので)なので、サブディレクトリから下に移動しないようにする以外は何もしません。常に "true" を返すので、ここで ( -name ... -prune ) は、ファイルまたはディレクトリの名前が "..." で、他のすべてが必要な場合にのみ true です。つまり -o(-print) です。

関連情報