为什么会发现.不显示所有文件

为什么会发现.不显示所有文件

ls - 列出目录内容

empty_dir# ls -al
total 0
drwxr-xr-x. 2 root root   6 Dec 31 09:49 .
dr-xr-x---. 6 root root 284 Dec 31 09:49 ..

find - 在目录层次结构中搜索文件

empty_dir# find
.

答案1

find必须刻意排除...

它必须避免下降到它们,就像它对 . 返回的其他目录所做的那样readdir()

它不是显示目录...不显示其任何内容,而是完全排除它们。

这是期望的行为,例如,如果您使用find -exec touch \{\} \;.用户不希望此命令影响..(父目录)。

一个令人满意的答案将指向一些描述这一点的正式规范。

可以说,POSIX 正在尝试记录这一点。我不太了解,无法将其作为正式规范。但下面的粗体句子表明它并没有“遇到”...

find 实用程序应从路径指定的每个文件递归地沿目录层次结构下降,对遇到的每个文件评估由 OPERANDS 部分中描述的原色组成的布尔表达式。每个路径操作数应在提供时按原样进行评估,包括所有尾随字符;层次结构中遇到的其他文件的所有路径名应由当前路径操作数、a(如果当前路径操作数不以 1 结尾)和相对于路径操作数的文件名的串联组成。相对部分不应包含点或点点组件,不应包含尾随字符,并且路径名组件之间仅包含单个字符

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html

相关内容