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 が返されます。
find
のマニュアルページから、以下の情報が表示されます。
-maxdepth 0は、テストとアクションをコマンドライン引数にのみ適用することを意味します。
-maxdepth 0
オプションを使用していくつかの例を検索しましたが、適切な例が見つかりませんでした。
私のfind
バージョンは、
find --version find (GNU findutils) 4.4.2
誰かが-maxdepth 0
オプションが役立つ場合の指針を教えてください。 ?
EDIT
以下のコマンドを実行すると、 file1 が2回リストされます。これはこのように機能することを目的としていますか?
find . file1 -maxdepth 1 -name "file1" ./file1 file1
回答
現在のディレクトリにfile1
があるとします。 :
$ find . -maxdepth 0 -name "file1" $ find . file1 -maxdepth 0 -name "file1" file1
では、ドキュメントの内容を見てみましょう。
-maxdepth0はonlを意味しますyテストとアクションをコマンドライン引数に適用します。
上記の最初の例では、ディレクトリ.
はコマンドラインに表示されます。 .
の名前はfile1
ではないため、出力には何も表示されません。上記の2番目の例では、.
とfile1
の両方がコマンドラインに表示されます。これは、file1
は-name "file1"
と一致し、出力で返されました
つまり、-maxdepth 0
は
not ディレクトリまたはサブディレクトリを検索します。代わりに、コマンドラインに明示的にリストされているファイルの中から一致するファイルのみを探します。
この例では、ディレクトリのみがコマンドラインにリストされており、file1
。したがって、出力はありません。
一般に、コマンドラインで多くのファイルとディレクトリに名前を付けることができます。たとえば、ここでは、コマンドラインに11個のファイルとディレクトリを含むfind
コマンドを試します。
$ 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
のようにパスが同じファイルにつながる場合でも、file1 file1
。
コメント
回答
ディレクトリ内で(ディレクトリではなく)ファイルを非再帰的に検索する場合:
find . -maxdepth 1 -type f -name "file1" # ./file1
-maxdepth 0
はを検索しません。 find
で引数として指定したファイル/ディレクトリ名の間でのみ一致を試みます。例えば。上記のステートメントで、値0
を使用すると、file1
を.
に一致させようとします。一致しません。 .
の代わりに*
を渡すと、bashは*
を現在のディレクトリ内のファイルのリストに置き換えます。一致を返します。
find * -maxdepth 0 -name "file1"
。*
は、コマンドラインの現在のディレクトリにあるすべてのファイルを一覧表示します。find
はそれぞれを確認しますコマンドラインのパスとレポートは、重複している場合でもそれぞれの一致を報告します。