在 Linux 文件系統中,所謂隱藏文件是文件名以 .
開頭的文件(例如 .bashrc
、.git
、.config
等)。
在編程層面,opendir
+ readdir
并不會自動排除隱藏文件。
只要你不在代碼中手動過濾,readdir
會把目錄下所有文件(包括隱藏文件)都讀出來。
核心邏輯
#include <stdio.h>
#include <dirent.h>int main(void) {DIR *dir;struct dirent *entry;dir = opendir(".");if (dir == NULL) {perror("opendir");return 1;}while ((entry = readdir(dir)) != NULL) {printf("%s\n", entry->d_name);}closedir(dir);return 0;
}
這段程序會打印當前目錄下的所有文件名,包括:
-
普通文件
-
隱藏文件(名字以
.
開頭的文件) -
特殊目錄項
.
和..
注意事項
-
如果你希望只列出隱藏文件,可以在
while
中加條件:
if (entry->d_name[0] == '.') {printf("%s\n", entry->d_name);
}
?這樣就只會輸出以 .
開頭的文件名(包括 .
和 ..
目錄)。
-
如果你希望排除
.
和..
,可以寫:
if (entry->d_name[0] == '.' &&strcmp(entry->d_name, ".") != 0 &&strcmp(entry->d_name, "..") != 0) {printf("%s\n", entry->d_name);
}
小結
-
opendir
和readdir
默認會讀出目錄下的所有文件名,包括隱藏文件。 -
是否顯示隱藏文件完全取決于你在代碼中怎么處理
d_name
。 -
如果要獲取隱藏文件,記得對
d_name[0] == '.'
進行條件判斷。 -
不需要額外的參數或特殊系統調用。
?
?