find -maxlength 0 は出力を返しません。

find -maxlength 0 は出力を返しません。

オプションの使い方を知りたいです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上記のコマンドがない場合ファイル1返されます。

マニュアルページでfind次の情報を見ることができます。

-maxlength 0は、コマンドライン引数にのみテストと操作を適用することを意味します。

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

私のfindバージョンは、

find --version
find (GNU findutils) 4.4.2

-maxdepth 0誰かが私にどのようなケースオプションが役に立つかについてのアドバイスを与えることができますか?

編集する

次のコマンドを実行すると、ファイル12回リストされています。これがうまくいく方法ですか?

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

ベストアンサー1

file1現在ディレクトリにあるとしましょう。それから:

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

さあ、何を見よう文書状態:

-maxdepth 0 コマンドラインパラメータはテストとタスクのみが適用されることを意味します。

上記の最初の例にはディレクトリのみがあります。.コマンドラインに一覧表示されます。 ~から.名前がなく、file1出力に何も表示されません。上記の2番目の例では、両方.file1列はコマンドラインにあり、match  file1のために-name "file1"出力に返されます。

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

あなたの例では、ディレクトリだけがコマンドラインに表示され、そのうちの名前はfile1。したがって、出力はありません。

通常、多くのファイルとディレクトリの名前をコマンドラインで指定できます。たとえば、ここではfind9つのファイルとディレクトリを含むコマンドラインからコマンドを試してみます。

$ ls
d1  file1  file10  file2  file3  file4  file5  file6  file7
$ find d1 file1 file10 file2 file3 file4 file5 file6 file7 -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

find. fileコマンドラインで指定されたすべてのパスは、パスが同じファイルにリンクされている場合(または同様に)、パスが正確に重複している場合でも一致するものを探しますfile1 file1

おすすめ記事