咨询:使用find `pwd` .获取绝对路径时输出重复的原因
为什么
find \pwd` .会返回重复结果,而find `pwd``不会? 这问题其实戳中了find命令处理多搜索路径的核心逻辑,咱们掰开了说:
首先得明确find的基础用法:它的第一个(及后续)参数是要递归搜索的起始路径,你可以一次性指定多个路径,find会逐个遍历这些路径下的所有文件。
当你执行
find \pwd`时,只给了**一个起始路径**——当前目录的绝对路径(比如/home/you/your-folder)。find`从这个路径出发,递归遍历所有文件,自然只会返回每个文件一次,而且都是绝对路径格式。但当你执行
find \pwd` .时,相当于给了**两个完全等价的起始路径**:一个是当前目录的绝对路径,另一个是相对路径.(本质上就是当前目录)。这时候find`会分开处理这两个路径:- 遍历绝对路径时,输出
/home/you/your-folder/file.txt这类结果; - 遍历
.时,输出./file.txt这类结果; - 因为这两个路径指向的是同一个目录,所以目录里的每一个文件都会被搜索两次,最终就出现了“同一文件两种路径格式”的重复结果。
- 遍历绝对路径时,输出
举个更直观的例子:如果你执行find /home/you/your-folder /home/you/your-folder,会得到两次完全相同的绝对路径结果,原理和你遇到的情况一模一样——重复指定了同一个起始路径,find就会重复遍历。
内容的提问来源于stack exchange,提问作者edgarstack
相关产品推荐
相关产品推荐

