Perlだったら楽勝なんですが、C言語ではどうやるかが
わからなかったので調べてみた。
opendirでディレクトリを読み出して、readdirでディレクトリ
エントリを読み出してファイル名を取得できる。
#include <stdio.h> #include <sys/types.h> #include <dirent.h> #include <sys/stat.h> int main (int argc, char *argv[]) { char *dirname; DIR *dirp; struct dirent *p; struct stat s; int retval; if (argc != 2) { dirname = "."; } else { dirname = argv[1]; } if ((dirp = opendir(dirname)) == NULL) { fprintf(stderr, "Can't open directory %s\n", dirname); return -1; } while ((p = readdir(dirp)) != NULL) { retval = stat(p->d_name, &s); if (retval != 0) { fprintf(stderr, "Can't stat %s\n", p->d_name); return -1; } if ((s.st_mode & S_IFMT) == S_IFREG) { printf("Filename %10s Size %10ld\n", p->d_name, s.st_size); } } if (closedir(dirp) != 0) { fprintf(stderr, "Can't close directory %s\n", dirname); return -1; } return 0; }
statも使ってファイルサイズを取得してみました。
C言語の manを見ても構造体がどんな感じなのかがわからないことが
多くて困る。本がないと調べるのが手間だったりしますね。引数が
増えると調べることもいっぱいって感じになりますし。