2019年9月16日 星期一

列出 Linux 某目錄下所有檔案與目錄名稱

太久沒用,花了 10 幾分鐘才搞定,記錄一下。

#include <stdio.h>
#include <dirent.h>
#include <string.h>

void parseDir(char *dirPath) {
    struct dirent *de;
    DIR *dr = opendir(dirPath);

    if (dr == NULL) {
        printf("Can't open folder %s \n", dirPath);
        return;
    }

    while ((de = readdir(dr)) != NULL) {
        if (strcmp(de->d_name, ".") == 0 ||
            strcmp(de->d_name, "..") == 0) {
            // do nothing
        } else if (de->d_type == DT_DIR) {
            char path[256];
            sprintf(path, "%s/%s", dirPath, de->d_name);
            printf("folder - %s \n", path);

            parseDir(path);
        } else {
            printf("file - %s/%s \n", dirPath, de->d_name);
        }
    }

    closedir(dr);
    return;
}

int main(void)
{
    parseDir("/data/imagenet/raw_data/train");
    return 0;
}

沒有留言:

張貼留言