ディレクトリ以外のすべての項目を検索

ディレクトリ以外のすべての項目を検索

検索実行中にディレクトリを無視する方法は?たとえば、次のようなものがあります。

.
├── fold
│   └── something
└── something

折りたたみ/何か- 目次 。 /何- 文書

私ははいfind . -name "something"、私はそれを無視しません。折りたたみ/何かディレクトリだから

ベストアンサー1

でテストします-type d。でテストの意味を変えます!

だから:

find . -name something ! -type d

something現在のディレクトリまたはその下で呼び出されたすべてを見つけることができますが、何も報告しません。目次呼ぶsomething

具体的に無視するには、./fold/something否定的な-pathテストを使用してください。

find . -name something ! -path ./fold/something

テストに使用するパス名は、-path最上位検索パス().のフルパスと一致する必要があります。

find名前付きディレクトリのレポートを停止し、somethingそのディレクトリに入らないようにするには、次の手順を使用します-prune

find . \
    -name something -type d -prune -o \
    -name something -print

または等しく、

find . -name something \( -type d -prune -o -print \)

これにより、まずsomething検索ツリーで呼び出され、見つかったすべてのディレクトリがクリーンアップされます。現在確認されているパスがという名前のディレクトリではsomethingなくという別のディレクトリである場合は、somethingそのパスを印刷します。ファイルタイプに関係なく(検索ツリーから削除されたため)、something以下で呼び出された項目は見つかりません。./fold/something./fold/something

おすすめ記事