これはRHEL5.6であり、GNUfind4.2.27です。
検索からディレクトリを除外しようとしていますが、ディレクトリが子孫になっていないことを確認したいと思います。-pruneがこれを行う-と言っている投稿をたくさん見ましたが、そうです。このコマンドを実行できます:
find . -type d -name "./.snapshot*" -prune -o -print
そしてそれは動作します。straceを実行して、.snapshotに下降していないことを確認します。
また、特定のレベルでのみディレクトリを検索したいと思います。これを行うには、mindepthとmaxdepthを使用できます。
find . -maxdepth 8 -mindepth 8 -type d
そしてそれは私に.snapshotにあるものを含む8レベル下のすべてのdirsを与えます。
pruneオプションとmindepthオプションおよびmaxdepthオプションを組み合わせる場合:
find . -maxdepth 8 -mindepth 8 -type d \( -path "./.snapshot/*" -prune -o -print \)
出力は正しいです-.snapshotにあるものを除いて、すべてのdirが8レベル下に表示されますが、straceを介して検索を実行すると、.snapshotはまだレベル1から8に下降していることがわかります。
さまざまな組み合わせを試しました。優先順位の括弧を移動し、式のコンポーネントを調整しました。適切な出力を生成するものはすべて、.snapshotに分類されます。
マニュアルページでは、-pruneは-depthでは機能しないことがわかりますが、mindepthとmaxdepthについては何も述べていません。
誰かアドバイスはありますか?
ありがとう...ビル