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
のmanページから、以下の情報がわかります。
-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
現在のディレクトリにfile1
があるとします。次に:
$ find . -maxdepth 0 -name "file1"
$ find . file1 -maxdepth 0 -name "file1"
file1
ここで、ドキュメントに記載されている内容を見てみましょう。
-maxdepth 0は、コマンドライン引数にテストとアクションのみを適用することを意味します。
上記の最初の例では、ディレクトリ.
のみがコマンドラインにリストされています。 .
には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
など。