“find -H”和“find -L”命令有什么区别?

cw1*_*w16 0 find hard-link symlink

当我执行命令时,两个命令都给出了相同的输出。我为文件创建了一个软链接和一个硬链接,但两个命令仍然给出了相同的输出。有没有之间的差异find -Hfind -L

G-M*_*ca' 7

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
Run Code Online (Sandbox Code Playgroud)

注意:

  • 在默认行为(即-P行为)中, find不遵循任一符号链接。  two(在顶级目录中)并dir1/three 简单地报告为对象。
  • 在 下-H,符号链接twodir2被跟随(即,我们可以看到file2,它在 中dir2),因为它是在命令行中two指定 。请注意,仍然报告为对象。find dir1/three
  • 在 下-L,遵循两个符号链接。我们可以看到file2,因为遵循了two → dir2链接,我们可以看到file3,因为遵循了dir1/three → ../dir3链接。

如果您现在还不是很清楚,请尝试在最后运行find我示例中的命令-ls(作为默认值的替代-print)并特别注意列出的方式twothree。您会注意到文件的符号链接 在不同的选项下也有不同的报告。

这是另一个例子:

$ ln -s /bin/sh mysh

$ find . -size +9

$ find -H . -size +9

$ find -L . -size +9
./mysh
Run Code Online (Sandbox Code Playgroud)

符号链接./mysh很小。它指向/bin/sh,这是一个相当大的文件。使用-size, 测试./mysh-P(默认)和下被视为小-H,但在 下被视为大-L,因为-L意味着“查看链接指向的文件”。


再举一个例子:

  • find . -type f( 和find -H . -type f) 只会找到普通文件。
  • find . "(" -type f -o -type l ")" 将找到纯文件和(所有)符号链接。
  • find -L . -type f将找到指向纯文件的纯文件和符号链接。(此外,如果目录树包含指向目录的任何符号链接, 也将搜索这些目录。)