在 Debian 系統中,你可以使用 readdir 函數來實現文件過濾。readdir 函數是 C 語言中的一個庫函數,用于讀取目錄中的文件。為了實現文件過濾,你可以在調用 readdir 函數后檢查文件名是否滿足你的過濾條件。
以下是一個簡單的示例,展示了如何使用 readdir 函數和 dirent.h 頭文件來實現文件過濾:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <sys/stat.h>
int is_directory(const char *path) {
struct stat path_stat;
if (stat(path, &path_stat) != 0) {
return -1;
}
return S_ISDIR(path_stat.st_mode);
}
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Usage: %s <directory_path>\n", argv[0]);
return 1;
}
const char *dir_path = argv[1];
DIR *dir = opendir(dir_path);
if (dir == NULL) {
perror("opendir");
return 1;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
// 過濾掉當前目錄(.)和上級目錄(..)
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
continue;
}
// 在這里添加你的過濾條件
// 例如,只顯示以 .txt 結尾的文件
if (strstr(entry->d_name, ".txt") != NULL) {
printf("%s\n", entry->d_name);
}
}
closedir(dir);
return 0;
}
在這個示例中,我們首先檢查命令行參數,確保提供了一個目錄路徑。然后,我們使用 opendir 函數打開目錄,并使用 readdir 函數讀取目錄中的文件。對于每個文件,我們檢查它是否滿足我們的過濾條件(在這個例子中,我們只顯示以 .txt 結尾的文件)。最后,我們使用 closedir 函數關閉目錄。
你可以根據需要修改過濾條件,以實現不同的文件過濾功能。