DIR、opendir()、および readdir() を使用して現在のディレクトリ内のすべてのファイルを調べ、以下のようにそれらを dirent 構造体に割り当てる C プログラムを作成しています。
int main(int argc, char *argv[])
{
DIR *d;
char *dir_name = ".";
struct stat s;
d = opendir(dir_name);
while (1) {
struct dirent *entry;
entry = readdir(d);
if (!entry)
break;
//how to check if this is a text file before printing?
printf ("%s\n", entry->d_name);
}
closedir(d)
}
調べる必要があるのは、ファイルをテストしてテキスト ファイルかどうかを確認する方法です。モードを調べるために stat() を使用することを考えました。この方法でディレクトリを除外できます。バイナリの場合、実行可能なビットを探すことができると思っていましたが、たとえば実行可能なテキスト ファイルであるスクリプトの場合は問題になります。
プログラムでテキスト ファイルのみをフィルタリングする方法について何か提案はありますか?