GNU/Linux >> Linux Esercitazione >  >> Linux

Contare il numero di file in una directory utilizzando C

Nessuna garanzia che questo codice venga compilato, ed è davvero compatibile solo con Linux e 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);

Vedi readdir .


Se vuoi includere anche le sottodirectory, puoi usare questa funzione che sto usando in parte del mio codice. Probabilmente dovresti modificarlo per includere un po' più di controllo degli errori e supportare diversi separatori di directory.

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. Come ottenere un conteggio di file in una directory utilizzando la riga di comando?

  2. come trovare il proprietario di un file o di una directory in python

  3. Numero massimo di file/directory su Linux?

  4. Come contare il numero di file in ogni directory?

  5. Uso di / quando si usa cd

Come trovare i file usando la riga di comando nel terminale Linux

Principianti Linux:gestisci i file utilizzando il terminale su CentOS 8

Conta il numero di file in una directory in Linux

Come contare il numero di file in una directory in Linux

Percorso assoluto vs relativo in Linux:qual è la differenza?

Linux:trova il numero di file in una directory e sottodirectory