「find -H」コマンドと「find -L」コマンドの違いは何ですか?

「find -H」コマンドと「find -L」コマンドの違いは何ですか?

コマンドを実行すると、両方のコマンドが同じ出力を提供します。ファイルへのソフトリンクとハードリンクを作成しましたが、まだ両方のコマンドが同じ出力を提供します。find -Hとの間に違いがありますかfind -L

ベストアンサー1

findハードリンクは-links。シンボリックリンクファイルとして非常に同様に扱われます。

私はfindあなたにマニュアルページを読んでもらいますが、あなたはすでにそれを読んだとします。マニュアルページは、初心者が理解しにくい難解な言語で書かれています。例は役に立ちます。これを行う:

$ mkdir dir1 dir2 dir3

$ touch dir1/file1 dir2/file2 dir3/file3

$ ln -s dir2 two

$ cd dir1

$ ln -s ../dir3 three

$ cd ..

$ ls -lR                                # I have deleted my user name from the below.
.:
total 1
drwxr-xr-x 1           0 Sep  4 13:08 dir1
drwxr-xr-x 1           0 Sep  4 13:08 dir2
drwxr-xr-x 1           0 Sep  4 13:08 dir3
lrwxrwxrwx 1           4 Sep  4 13:08 two -> dir2

./dir1:
total 1
-rw-r--r-- 1           0 Sep  4 13:08 file1
lrwxrwxrwx 1           7 Sep  4 13:08 three -> ../dir3

./dir2:
total 0
-rw-r--r-- 1           0 Sep  4 13:08 file2

./dir3:
total 0
-rw-r--r-- 1           0 Sep  4 13:08 file3

$ find dir1 two
dir1
dir1/file1
dir1/three
two

$ find -P dir1 two                      # This is the default; i.e., same as the above.
dir1
dir1/file1
dir1/three
two

$ find -H dir1 two
dir1
dir1/file1
dir1/three
two
two/file2

$ find -L dir1 two
dir1
dir1/file1
dir1/three
dir1/three/file3
two
two/file2

気づく:

  • デフォルトの動作(つまり、-P動作)では、findどのシンボリックリンクも従わない。  two(最上位ディレクトリにあります)dir1/three 単にオブジェクトとして報告されます。
  • 下には-Hシンボリックリンクtwo→が指定されているので(つまり、 に位置することがわかる)dir2file2dir2two~へ find コマンドラインdir1/threeそれでもオブジェクトとして報告されます。
  • 以下には-L両方のシンボリックリンクが続きます。 →リンクfile2に従ったのでわかります。 →リンクに従ったからです。twodir2file3dir1/three../dir3

これまで明確ではない場合(デフォルトではなく)、私の例findでコマンドを実行して、リストの表示方法と方法に特別な注意を払ってください。シンボリックリンクが見えます。-ls-printtwothreeファイルとして さまざまなオプションに応じて、さまざまなレポートもあります。

別の例は次のとおりです。

$ ln -s /bin/sh mysh

$ find . -size +9

$ find -H . -size +9

$ find -L . -size +9
./mysh

シンボリックリンク./myshは小さいです。を指すが/bin/sh、これはかなり大きなファイルです。でテストした結果、-sizeunder(デフォルト)と./myshunderは小さいものとして扱われますが、underはより大きいものとして扱われます。これは、「リンクが指すファイルの表示」を意味するからです。-P-H-L-L


他の例:

  • find . -type f(およびfind -H . -type f)は通常のファイルのみを検索します。
  • find . "(" -type f -o -type l ")"通常のファイルと(すべての)シンボリックリンクが見つかります。
  • find -L . -type f通常のファイルとシンボリックリンクが見つかります。一般ファイルを指します。。 (また、ディレクトリツリーにディレクトリへのシンボリックリンクが含まれている場合 それらディレクトリも検索されます。 )

おすすめ記事