find的 -L 参数

`find -L`命令在Linux中用于**跟随符号链接,以查找链接指向的文件或目录**。

具体来说,`-L`选项告诉`find`命令,当遇到符号链接时,**应该进入链接指向的文件或目录进行查找**,而不是停留在链接本身。这个选项特别有用,当你需要搜索一个包含大量符号链接的文件系统时,因为默认情况下,`find`不会跟随符号链接。使用`-L`选项可以确保搜索结果包括所有通过符号链接可达的文件和目录。

例如,如果你有一个符号链接`/path/to/symlink`指向`/path/to/target`,并且你想要找到`/path/to/target`目录下的所有文件,你可以使用`find /path/to/symlink -L -type f`命令来实现这一点。这样,即使`/path/to/symlink`是一个符号链接,`find`也会搜索`/path/to/target`目录中的实际文件。

需要注意的是,使用`-L`选项时,`find`会忽略`-noleaf`(不进入目录查找)选项,即使之前使用了`-noleaf`,`-L`也会让`find`进入链接指向的目录进行查找。此外,如果在后续的命令中使用了`-P`(不跟随符号链接)选项,`-noleaf`仍然会生效,但`-L`的效果会被取消。

看下面的命令:

find -L . \
 \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
  -o -perm 511 \) -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
  -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;

这个Linux命令的作用是查找当前目录(`.`)及其子目录中权限为777、775、750、711、555、511或666、664、640、600、444、440、400的文件,并将它们的权限分别更改为755和644。

具体解释如下:

- `find -L .`:使用`find`命令在当前目录(`.`)及其子目录中进行搜索。
- `\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \)`:这部分表示查找权限为777、775、750、711、555或511的文件。
- `-exec chmod 755 {} \;`:对于满足上述条件的文件,执行`chmod 755`命令,将文件权限更改为755。
- `-o`:表示逻辑或操作,用于连接两个条件。
- `\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \)`:这部分表示查找权限为666、664、640、600、444、440或400的文件。
- `-exec chmod 644 {} \;`:对于满足上述条件的文件,执行`chmod 644`命令,将文件权限更改为644。

posted @ 2024-04-27 13:52  立体风  阅读(6)  评论(0编辑  收藏  举报