在Linux下,实现目录遍历的函数有很多种,这里我将介绍两种常用的方法:使用opendir()
和readdir()
函数,以及使用find()
命令。
方法一:使用opendir()
和readdir()
函数
这是一个使用C语言编写的示例代码,用于遍历指定目录下的所有文件和子目录:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
void list_directory_contents(const char *path) {
DIR *dir;
struct dirent *entry;
dir = opendir(path);
if (dir == NULL) {
perror("opendir");
return;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
}
int main(int argc, char *argv[]) {
if (argc != 2) {
fprintf(stderr, "Usage: %s <directory_path>\n", argv[0]);
return EXIT_FAILURE;
}
list_directory_contents(argv[1]);
return EXIT_SUCCESS;
}
编译并运行这个程序,传入一个目录路径作为参数,它将输出该目录下的所有文件和子目录。
方法二:使用find()
命令
在Linux终端中,你可以使用find()
命令来遍历目录。例如,要遍历当前目录及其子目录下的所有文件和目录,可以使用以下命令:
find . -type d -exec ls -l {} \;
这将显示当前目录及其子目录下的所有目录及其详细信息。如果你只想列出文件,可以将-type d
替换为-type f
:
find . -type f -exec ls -l {} \;
如果你想遍历特定目录,只需将.
替换为所需目录的路径。