为什么 find 返回 .但不是 ..?

为什么 find 返回 .但不是 ..?

假设我移动到以下路径的空目录:/home/user/dir

如果我执行:find . ! -name "*.txt"结果是:

.

但如果我执行,find /home/user/dir ! -name "*.txt"我不会得到任何结果。

为什么 find 有这种行为?哪里指定的?

而且,为什么..不包括在内?

答案1

Find 不应该打印在目录树搜索过程中遇到的.和条目..。无论如何,它们都没有用处。如果你把它从 开始.,它确实会打印出来。

寻找实用程序应从由指定的每个文件递归地降低目录层次结构小路,[...]层次结构中遇到的其他文件的所有路径名应由当前路径操作数、a(如果当前路径操作数不以 1 结尾)和相对于路径操作数的文件名的串联组成。相关部分不得包含点或点-点组件,没有尾随 <slash> 字符,路径名组件之间只有单个 <slash> 字符。

使用,可以找到find ./foo类似的路径名,其中,将是当前路径操作数,添加在中间,并且将是相对部分。./foo/bar/hello.txt./foo/bar/hello.txt

find /home/user/dir ! -name "*.txt"至少应该打印/home/user/dir因为dir不匹配*.txt。 (当然,它还应该打印名称不以 结尾的任何其他文件.txt)。如果您find /home/user/dir -name "*.txt"没有使用否定,/home/user/dir则不会打印,因为它与条件不匹配。

相关内容