为什么执行$ find .命令不会返回上级目录快捷方式..的搜索结果?
为什么执行
find .不会返回..条目 该表现是find工具的标准默认设计,核心逻辑如下:
find的遍历规则为仅从指定的起始路径开始向下递归检索:执行find .时指定的起始路径是当前工作目录.,find会首先输出起始路径本身,这就是.会出现在搜索结果中的原因。..是当前目录指向父目录的特殊条目,属于向上层级的路径引用,不属于当前目录下要向下遍历的子内容范围,因此find默认不会将其纳入检索结果,该设计同时可以避免无意义的向上回溯甚至目录遍历循环。
依据POSIX标准对
find的定义,find遍历的范围仅包含起始路径及其下属的所有子层级内容,不会主动处理父目录引用..。
- 当前目录下指向父目录的软链接会出现在结果中,是因为这个软链接本身就是当前目录下的实体子条目,符合向下检索的范围:
- 默认情况下
find启用-P参数(不跟随软链接),只会输出软链接文件本身,不会进入它指向的父目录遍历。 - 如果你主动加上
-L参数要求跟随软链接,find才会进入该软链接指向的父目录进行后续检索。
- 默认情况下
内容的提问来源于stack exchange,提问作者phb
相关产品推荐
相关产品推荐

