使用 -L 查找用法

使用 -L 查找用法

我有

link -> file

我愿意

find -L . -name 'link'

并得到

./link

这是为什么?

男人发现 说:

-L :遵循符号链接。当 find 检查或打印有关文件的信息时,所使用的信息应从链接指向的文件的属性中获取,而不是从链接本身获取(除非它是损坏的符号链接或 find 无法检查该文件链接指向的位置)。

答案1

一般规则是,如果命令对链接(即目录条目,指向 inode 的指针)进行操作,则该命令将符号链接视为其本身,而不是链接指向的对象。否则,该命令将对符号链接指向的内容进行操作。因此,cp默认情况下遵循符号链接并复制链接指向的文件的内容。但是,当您要求cp通过指定来处理目录条目时-R,它会停止遵循符号链接。 mv始终与目录条目一起使用,因此它从不遵循符号链接。

find命令的正常活动是对目录条目进行操作,因此默认情况下不遵循符号链接。添加-L原因find以跟踪所有属性的符号链接除了进行目录搜索时不能忽略的一个,就是名称。的目的之一find -name是为诸如mv和 之类的命令提供输入rm,这些命令对目录条目进行操作。如果find -L dir -name产生的名称指向以 为根的目录树之外,将会产生令人不快和令人惊讶的结果dir

答案2

使用-L,它检查特性文件的内容或元数据,而不是链接的内容或元数据。例如,如果您使用-atime,它将检查atime文件的 ,而不是链接:

$ find testdir/ -name link -newer testdir/ref
testdir/link
$ find -L testdir/ -name link -newer testdir/ref
$

testdir/link是在 后创建的testdir/ref,但它指向的文件不是。

相关内容