find -maxdepth 0出力を返さない


17

find -maxdepth 0オプションの使用方法を理解しようとしています。

以下のディレクトリ構造があります。

--> file1
--> parent
          --> child1
                   --> file1
                   --> file2
          --> child2
                   --> file1
                   --> file2
          --> file1

ここで、次のようにfindコマンドを実行します。

find ./parent -maxdepth 0 -name "file1"
find ./ -maxdepth 0 -name "file1"
find . -maxdepth 0 -name "file1"

上記のfindコマンドのいずれも使用しない場合、file1が返されます。

のmanページからfind、以下の情報が表示されます。

-maxdepth 0は、コマンドライン引数にテストとアクションのみを適用することを意味します。

-maxdepth 0オプション付きのいくつかの例を検索しましたが、適切な例が見つかりませんでした。

私のfindバージョンは、

find --version
find (GNU findutils) 4.4.2

誰かがどのケースの-maxdepth 0オプションが役立つかについてのポインタを教えてくれますか?

編集

以下のコマンドを実行すると、file1が2回リストされます。これはこのように機能することを意図していますか?

find . file1 -maxdepth 1 -name "file1"
./file1
file1

回答:


24

file1現在のディレクトリにあると仮定します。次に:

$ find . -maxdepth 0 -name "file1"
$ find . file1 -maxdepth 0 -name "file1"
file1

次に、ドキュメントの状態を見てみましょう。

-maxdepth 0は、コマンドライン引数にテストとアクションのみを適用することを意味します。

上記の最初の例.では、コマンドラインにディレクトリのみがリストされています。.名前がないためfile1、出力には何もリストされません。上記の私の第二の例では、両方.file1するので、コマンドラインに記載されているとされているfile1試合は-name "file1"、それが出力に返されました

つまり、-maxdepth 0手段はディレクトリまたはサブディレクトリを検索しません。代わりに、コマンドラインに明示的にリストされているファイルの中から一致するファイルのみを探します。

あなたの例では、ディレクトリのみがコマンドラインにリストされ、それらのどれも名前が付けられていませんfile1。したがって、出力はありません。

一般に、多くのファイルとディレクトリはコマンドラインで名前を付けることができます。たとえばfind、コマンドラインで11のファイルとディレクトリを使用してコマンドを試してみます。

$ ls
d1  file1  file10  file2  file3  file4  file5  file6  file7  file8  file9
$ find d1 file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 -maxdepth 0 -name "file1"
file1

重複するパス

考慮してください:

$ find . file1 -maxdepth 0 -iname file1
file1
$ find . file1 file1 -maxdepth 0 -iname file1
file1
file1
$ find . file1 file1 -maxdepth 1 -iname file1
./file1
file1
file1

どうやら、Rameshが指摘しているfindように、コマンドラインで指定された各パスをたどり. file、パスがinのように同じファイルに至る場合、またはパスがinのように完全に重複している場合でも一致を探しますfile1 file1


ありがとう。しかし、どのようにしてコマンドラインでいくつかのファイル名を渡すことができますか?
ラメシュ14年

いい視点ね。更新された回答をご覧ください。最初のテストの前に好きなだけ置くことができます。例:find * -maxdepth 0 -name "file1"*コマンドラインで、現在のディレクトリ内のすべてのファイルが一覧表示されます。
John1024 14年

1
@Ramesh Answerは、より良い説明と例で更新されました。
John1024 14年

再度、感謝します。最新の更新の詳細を使用して質問を更新しました。
ラメシュ14年

@Ramesh文書化されていませんが、同じ動作がfind見られます。コマンドラインで各パスを調べ、重複していても各パスの一致を報告します。
John1024 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.