Answers:
使用-L
,它将检查文件的属性 -内容或元数据,而不是链接的属性。例如,如果您使用-atime
,它将检查atime
文件的,而不是链接:
$ find testdir/ -name link -newer testdir/ref
testdir/link
$ find -L testdir/ -name link -newer testdir/ref
$
testdir/link
是在之后创建的testdir/ref
,但指向的文件不是。
一般规则是,如果命令对链接(即目录条目,它们是指向inode的指针)进行操作,则该命令会将符号链接视为自身,而不是链接指向的对象。否则,该命令将根据symlink指向的内容进行操作。因此cp
,默认情况下遵循符号链接,并复制链接指向的文件的内容。但是,当您要求cp
通过指定处理目录条目时-R
,它将停止跟随符号链接。 mv
总是与目录条目一起使用,因此它永远不会遵循符号链接。
该find
命令的正常活动是对目录条目进行操作,因此默认情况下不跟随符号链接。添加-L
原因find
后,所有属性都遵循符号链接,但目录搜索时不能忽略的属性即名称。的目的之一find -name
是为诸如,mv
和rm
等操作目录条目的命令提供输入。如果find -L dir -name
产生的名称指向以root为根的目录树之外,将产生令人不愉快的结果dir
。
There would be unpleasant and surprising results if
发现-L dir -name`可能会产生指向以dir为根的目录树之外的名称 find dir -name pattern
。因为添加-L允许指向外部目录
cp -R
在符号链接下复制内容呢?