2016-12-05 65 views
-2

使用bash,我可以發現計算像jpg,mp4等文件的特定擴展的計數。如何使用C語言系統調用來實現此目的?任何幫助使用C語言系統調用來實現此目的?使用系統調用使用C語言查找具有特定擴展名的文件的計數

ls -lR /path/to/dir/*.jpg | wc -l 
+2

「C語言系統調用」是什麼意思? – EOF

+0

我的意思是用任何可用的系統庫函數使用C語言來實現這一點。使用bash或任何正則表達式可能,但我想用C語言解決 –

+0

[C:運行系統命令並獲取輸出?](http://stackoverflow.com/questions/646241/c-run-a-system -command-and-get-output) –

回答

0

Here is an example展示瞭如何使用readdir()功能。你應該可以很容易地修改它來做你想做的事。

+0

這是否包括這個人試圖避免學習某些東西的可能性,還*通過考試? – usr2564301

+1

那麼,我給這個人一個例子,他們將不得不修改,以做他們需要的東西。所以他們必須學習或理解代碼的功能。 – Chimera

+0

@RadLexus:是的,就像Chimara說的,我給出的代碼只是指導原則。他必須修改我的代碼才能完成他的工作。 –

1

使用popen這樣子。

#include <stdio.h> 

int main(void){ 
    FILE *fp = popen("ls -lR /path/to/dir/*.jpg | wc -l", "r"); 
    int count; 

    fscanf(fp, "%d", &count); 
    pclose(fp); 

    printf("%d\n", count); 

    return 0; 
} 
+0

@alk謝謝。固定。 – BLUEPIXY

1

我一般使用的代碼。你可以自己操作d_name。

#include <sys/types.h> 
#include <dirent.h> 
#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    DIR *dp; 
    struct dirent *dirp; 

    if (argc != 2) 
     /* redo input */ 
    if ((dp = opendir(argv[1])) == NULL) 
     /* error opening dir */ 
    printf("%8s %8s %8s %8s %8s\n", 
      "d_name", "d_fileno", 
      "d_reclen", "d_type", 
      "d_namlen"); 
    while ((dirp = readdir(dp)) != NULL) 
     printf("%8s %8d %8d %8d %8d\n", 
       dirp->d_name, dirp->d_fileno, 
       dirp->d_reclen, dirp->d_type, 
       dirp->d_namlen); 
    closedir(dp); 
    return 0; 
} 
相關問題