GNU/Linux >> Belajar Linux >  >> Linux

Menghitung jumlah file dalam direktori menggunakan C

Tidak ada jaminan bahwa kode ini dapat dikompilasi, dan ini benar-benar hanya kompatibel dengan Linux dan BSD:

#include <dirent.h>

...

int file_count = 0;
DIR * dirp;
struct dirent * entry;

dirp = opendir("path"); /* There should be error handling after this */
while ((entry = readdir(dirp)) != NULL) {
    if (entry->d_type == DT_REG) { /* If the entry is a regular file */
         file_count++;
    }
}
closedir(dirp);

Lihat readdir .


Jika Anda ingin menyertakan subdirektori juga, Anda dapat menggunakan fungsi ini yang saya gunakan di beberapa kode saya. Anda mungkin harus memodifikasinya untuk menyertakan beberapa pemeriksaan kesalahan dan mendukung pemisah direktori yang berbeda.

int countfiles(char *path) {
    DIR *dir_ptr = NULL;
    struct dirent *direntp;
    char *npath;
    if (!path) return 0;
    if( (dir_ptr = opendir(path)) == NULL ) return 0;

    int count=0;
    while( (direntp = readdir(dir_ptr)))
    {
        if (strcmp(direntp->d_name,".")==0 ||
            strcmp(direntp->d_name,"..")==0) continue;
        switch (direntp->d_type) {
            case DT_REG:
                ++count;
                break;
            case DT_DIR:            
                npath=malloc(strlen(path)+strlen(direntp->d_name)+2);
                sprintf(npath,"%s/%s",path, direntp->d_name);
                count += countfiles(npath);
                free(npath);
                break;
        }
    }
    closedir(dir_ptr);
    return count;
}

Linux
  1. Cara Menemukan Jumlah File dalam Direktori dan Subdirektori

  2. Hitung baris semua file di direktori Ubuntu

  3. Menghitung file secara rekursif dalam direktori Linux

  1. Apa Cara Terbaik Untuk Menghitung Jumlah File Dalam Direktori?

  2. Menggunakan –exclude Dengan Perintah Du?

  3. Daftar file secara rekursif di Linux CLI dengan jalur relatif ke direktori saat ini

  1. cara menemukan pemilik file atau direktori dengan python

  2. Jumlah maksimum file/direktori di Linux?

  3. Bagaimana cara menghitung jumlah file di setiap direktori?