Linux 下 搜索 当前目录下是否存在文件名包含“list”的文件,有则打开的c代码
时间: 2024-09-29 13:12:11 浏览: 25
在Linux环境下,如果你想通过C语言编写代码来搜索当前目录下是否存在文件名包含"list"的文件,并在找到时尝试打开它,可以使用`#include <stdio.h>`, `<dirent.h>` 和 `<sys/stat.h>` 等头文件。这里是一个简单的示例:
```c
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
int main() {
DIR *dir;
struct dirent *entry;
// 获取当前工作目录
char cwd[PATH_MAX];
getcwd(cwd, sizeof(cwd));
// 打开目录句柄
dir = opendir(cwd);
if (dir == NULL) {
perror("Failed to open directory");
return 1;
}
// 遍历目录中的每个条目
while ((entry = readdir(dir)) != NULL) {
if (strstr(entry->d_name, "list")) { // 检查文件名是否包含 "list"
char full_path[PATH_MAX];
snprintf(full_path, PATH_MAX, "%s/%s", cwd, entry->d_name);
// 检查文件是否存在并尝试打开
struct stat file_stat;
if (stat(full_path, &file_stat) == -1) {
perror("Failed to stat the file");
} else if (S_ISREG(file_stat.st_mode)) { // 文件存在并且是普通文件
FILE *file = fopen(full_path, "r"); // 尝试以读模式打开
if (file) {
printf("Opened file: %s\n", full_path);
fclose(file); // 关闭文件后继续检查其他文件
} else {
perror("Failed to open the file");
}
} else {
printf("Skipped non-file: %s\n", full_path);
}
}
}
closedir(dir);
return 0;
}
阅读全文