Filesystems
為什麼會找到。不顯示所有文件
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 .
find
不得不刻意排除.
和..
它必須避免進入它們,就像對
readdir()
.它不顯示目錄
.
但..
不顯示它們的任何內容,而是完全排除它們。這是所需的行為,例如,如果您使用
find -exec touch \{\} \;
. 使用者不希望此命令影響..
(父目錄)。一個令人滿意的答案將指向一些描述這一點的正式規範。
可以說,POSIX 正試圖記錄這一點。我不太了解,無法將其作為正式規範。但是下面加粗的句子表明它沒有“遇到”
.
和..
。查找實用程序應從路徑指定的每個文件遞歸地降低目錄層次結構,對遇到的每個文件評估由操作數部分中描述的基本元素組成的布爾表達式。每個路徑操作數都應按原樣進行評估,包括所有尾隨字元;層次結構中遇到的其他文件的所有路徑名應由目前路徑操作數的串聯組成,如果目前路徑操作數不是以 1 結尾,以及相對於路徑操作數的文件名。相對部分不應包含點或點-點組件,不包含尾隨字元,並且路徑名組件之間僅包含單個字元。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html