~からhttps://unix.stackexchange.com/a/81379/674
-path
開始パスを(再)定義しないでください。現在の検査対象の開始経路と相対経路の組み合わせをいう。「開始パス」とは、次のパラメータを意味しますか
path
?find
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
「現在確認されたオブジェクトの開始パスと相対パスの組み合わせ」とはどういう意味ですか?
src
たとえば、この機能を使用すると、レベルに関係なくサブディレクトリ内のすべてのファイルを見つけることができます。src
「レベルに関係なく、サブディレクトリ内のすべてのファイルを検索する」はどのように行われますか?「/または.を特別に扱わないでください」とは、
*
ファイル名(拡張子を含む)とサブディレクトリの両方が一致できること[...]/file*
を意味します/file.txt
。/files/foo.bar
「特別な処置なし/または」が記載されていない
*
ため、「特別な処置なし/または」はのみ適用されますか*
?
答え1
はい、「開始パス」は、コマンドの先頭
find
、オプションの後、式の前に表示されるディレクトリ名の1つです。私はあなたがリンクした質問をOPが2つの違いについて混同していることを示していると解釈します。find /etc ...
そして
find -path /etc ...
-
「現在検査対象の開始経路と相対経路の組み合わせを指します。」
この回答の作成者は、およびファイルを
tools/crowbar
含むというディレクトリがあると想像します。言うならdrink
food
foolishness
wisdom
find tools/crowbar -path "*bar/foo*"
合計は見つかりますが、他の2つは見つかりません。
tools/crowbar/food
tools/crowbar/foolishness
-
私はlcd047に同意します。つまり、次のようなディレクトリ構造を持っていると
。 ├────猫 │ ├────犬 │ │ └────犬小屋 │ └────택 │ └────src ├────目的地 ├────オリジナル │ ├────レシピ │ └────src └────ソース
それから
find . -path "*/src/*"
src
cat
、、、、、またはのコンテンツを報告せずに、3つの フォルダすべて(およびcat/dog
すべてのサブディレクトリ)でコンテンツを検索します。cat/dog/kennel
cat/tac
dest
original
original/recipe
文章の一部だけを選んで個別に意味があると期待するよりも、全段落を読む方が役立ちます。
-path
テスト中の議論検索(1)説明する、-path pattern
- ファイル名がシェルパターンと一致します。模様。メタ文字は「
/
」または「」を特別に処理しません.
。たとえば、次のようになります。探す。 -パス「./sr*sc」
./src/misc
""というディレクトリが存在する場合は、そのディレクトリのエントリを印刷してください。 ...[OK]、同じ行に「ファイル名」、「シェルパターン」、および「メタ文字」が表示されている場合は、特殊パターン文字を含むシェルのパターン一致/パス名の拡張を考える必要があります。
*
、?
と[
...]
。 (「メタ文字」は基本的に「特殊文字」の$ 10単語です。)次の*
例が表示されます。だから何を言うのかを理解できるはずです。それで、それはどういう意味ですか?例を見てください:
sr*sc
matchsrc/misc
。これは通常、 match などを使用する必要があるシェルのパス名拡張とは異なります。そしていいえ、これは同じ方法で適用されるわけではありません。sr*/*sc
src/misc
*
-path "sr????sc"
-path "sr[cim/][cim/][cim/][cim/]sc"
彼らが言及していないのは、シェルのパス名拡張で通常(シェルで)一致しない場合でも、一致するだけでなく一致
-path "*sr*sc"
することです。src/misc
.src/misc
src/.misc
*sr*/*sc
*
.
。
答え2
find(1)
混乱を避けるために、プロトタイプを次のように考える必要があります。
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [dir...] [expression]
find(1)
ファイルを見つけますdir
。 expression
見つかったファイルに適用されるテストで構成される論理式。 -path
、、、-name
は-type
そのようなテストの例です。
上記はデフォルトでは
-path
設定されていませんが、その引数はdir
相対的に処理されますdir
。は
-path '*src*'
一致します./src/foo/bar/test.c
が./foo/src/bar/test.c
、一致しません./foo/bar/test.c
。これは
*
ディレクトリ全体で一致するワイルドカードです。また、これを「拡張子」を持つファイルと一致するように*
作成する必要があるDOS / Windowsの世界と混同しないでください。*.*
または少なくともそれは私の理解です。