日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux中如何统计目录中的文件,[Linux目录文件]在Linux中统计目录内文件

發布時間:2025/3/11 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux中如何统计目录中的文件,[Linux目录文件]在Linux中统计目录内文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//調用opendir和readdir函數對指定目錄進行遍歷操作

//然后打印輸出指定目錄中各種類型的文件數目

#include?

#include?

#include?

#include?

#include?

#include?

#include?

typedefint?Myfunc(const?char?*,?const?struct?stat?*,?int);???//定義一個函數

static?Myfunc?myfunc;

static?int?myftw(char?*,?Myfunc?*);

static?int?dopath(Myfunc?*);

static?long?nreg,?ndir,?nblk,?nchr,?nfifo,?nslink,?nsock,?ntot;

//各種類型的文件數目對應的變量

char?*path_alloc(int*?size);

int?main(int?argc,?char?*argv[])

{

int?ret;

if?(argc?!=?2)

{

printf("請輸入正確的參數!\n");???//參數錯誤

return?1;

}

ret?=?myftw(argv[1],?myfunc);/*?does?it?all?*/

ntot?=?nreg?+?ndir?+?nblk?+?nchr?+?nfifo?+?nslink?+?nsock;

//計算文件總量

if?(ntot?==?0)?????//如果目錄中沒有文件則將ntot設置為1以避免除數為0

{

ntot?=?1;

}

//以下一次打印各種類型文件的數據

printf("普通文件?=?%7ld,?%5.2f?%%\n",?nreg,?nreg*100.0/ntot);

printf("目錄文件?=?%7ld,?%5.2f?%%\n",?ndir,ndir*100.0/ntot);

printf("塊設備文件?=?%7ld,?%5.2f?%%\n",?nblk,nblk*100.0/ntot);

printf("字設備文件?=?%7ld,?%5.2f?%%\n",?nchr,?nchr*100.0/ntot);

printf("FIFOs?=?%7ld,?%5.2f?%%\n",?nfifo,nfifo*100.0/ntot);

printf("符號鏈接文件?=?%7ld,?%5.2f?%%\n",?nslink,?nslink*100.0/ntot);

printf("套接字文件?=?%7ld,?%5.2f?%%\n",?nsock,nsock*100.0/ntot);

return?ret;

}

//路徑緩沖區分配函數

char?*path_alloc(int*?size)

{

char?*p?=?NULL;

if(!size)

{

return?NULL;

}

p?=?malloc(256);

if(p)

{

*size?=?256;

}

else

{

*size?=?0;

}

return?p;

}

#defineFTW_F1//

#defineFTW_D2//目錄

#defineFTW_DNR3//不能讀的目錄

#defineFTW_NS4//不能獲得狀態的文件

static?char*fullpath;//存放每個文件完整路徑

static?int?myftw(char?*pathname,?Myfunc?*func)

{

int?len;

fullpath?=?path_alloc(&len);//給路徑緩沖區分配一個長度

strncpy(fullpath,?pathname,?len);//復制文件名稱

fullpath[len-1]?=?0;

return(dopath(func));

}

//獲得文件的狀態

static?int?dopath(Myfunc*?func)

{

struct?statstatbuf;

struct?dirent*dirp;

DIR?*dp;

int?ret;

char?*ptr;

if?(lstat(fullpath,?&statbuf)?

{

return(func(fullpath,?&statbuf,?FTW_NS));

}

if?(S_ISDIR(statbuf.st_mode)?==?0)//如果不是目錄

{

return(func(fullpath,?&statbuf,?FTW_F));

}

if?((ret?=?func(fullpath,?&statbuf,?FTW_D))?!=?0)

{

return(ret);

}

ptr?=?fullpath?+?strlen(fullpath);//指向路徑緩沖區結尾

*ptr++?=?'/';

*ptr?=?0;

if?((dp?=?opendir(fullpath))?==?NULL)//如果不能讀目錄

{

return(func(fullpath,?&statbuf,?FTW_DNR));

}

while?((dirp?=?readdir(dp))?!=?NULL)?{

if?(strcmp(dirp->d_name,?".")?==?0??||

strcmp(dirp->d_name,?"..")?==?0)

continue;/*?ignore?dot?and?dot-dot?*/

strcpy(ptr,?dirp->d_name);/*?append?name?after?slash?*/

if?((ret?=?dopath(func))?!=?0)/*?recursive?*/

break;/*?time?to?leave?*/

}

ptr[-1]?=?0;/*?erase?everything?from?slash?onwards?*/

if?(closedir(dp)?

{

printf("can't?close?directory?%s\n",?fullpath);

}

return(ret);

}

static?int?myfunc(const?char?*pathname,?const?struct?stat?*statptr,?int?type)

{

switch?(type)?{

case?FTW_F:

switch?(statptr->st_mode?&?S_IFMT)?{

case?S_IFREG:nreg++;break;

case?S_IFBLK:nblk++;break;

case?S_IFCHR:nchr++;break;

case?S_IFIFO:nfifo++;break;

case?S_IFLNK:nslink++;break;

case?S_IFSOCK:nsock++;break;

case?S_IFDIR:

printf("for?S_IFDIR?for?%s\n",?pathname);

}

break;

case?FTW_D:

ndir++;

break;

case?FTW_DNR:

printf("can't?read?directory?%s\n",?pathname);

break;

case?FTW_NS:

printf("stat?error?for?%s\n",?pathname);

break;

default:

printf("unknown?type?%d?for?pathname?%s\n",?type,?pathname);

}

return(0);

}

總結

以上是生活随笔為你收集整理的linux中如何统计目录中的文件,[Linux目录文件]在Linux中统计目录内文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩亚洲成人 | 一级日韩毛片 | 亚洲午夜av在线 | 北条麻妃在线一区 | 在线观看9.1 | 小小姑娘电影大全免费播放 | 综合图区亚洲 | 狠狠一区 | 牛牛影视一区二区 | 丁香花电影免费播放在线观看 | 天天天综合网 | 国产专区av | 欧美国产高清 | 日本欧美在线视频 | 久久另类ts人妖一区二区 | 亚洲乱码一区二区 | 午夜寂寞福利 | 视频在线观看视频 | 日韩在线观看免费全 | 新呦u视频一区二区 | 成年人黄色大片 | 亚洲aa| 国产又粗又猛又爽又黄的网站 | 嫩草影院av | 少妇熟女视频一区二区三区 | 欧美成人一区二免费视频软件 | 亚洲美女视频一区 | 亚洲男人的天堂网 | 黑人性视频 | 91夫妻视频 | 一区二区三区四区亚洲 | 四虎精品在永久在线观看 | 日本一区二区在线免费观看 | 免费国产一区 | 扒开美女内裤狂揉下部 | 亚洲欧美成人网 | 欧美一区免费 | 韩国三级与黑人 | 国产日韩精品久久 | 福利视频免费 | 蜜臀一区二区三区 | 狠狠操影视 | 制服丝袜国产精品 | 欧美a级大片 | 国产人成一区二区三区影院 | www.-级毛片线天内射视视 | 麻豆视频一区二区三区 | hs网站在线观看 | 欧美人人爽 | 亚洲蜜臀av| 蜜桃久久av | 奴性女会所调教 | 亚洲国产精品美女 | 高清欧美性猛交 | 在线观看日韩精品 | 国产美女一区二区三区 | 日韩在线观看第一页 | 日韩av成人 | 久草福利在线视频 | 美女黄色在线观看 | 97av.com| av高清一区 | 亚欧综合在线 | 丁香啪啪 | 欧美一区二 | 美利坚合众国av | 亚洲AV无码精品一区二区三区 | 免费看又黄又无码的网站 | 在线看你懂| 男人插女人下面视频 | 国产欧美一区二区三区在线看 | 欧美一区二区免费 | 日本亚洲一区二区 | 精品国产无码AV | 国产精品11 | 女同一区二区 | 欧美激情videos| 日韩精品一区二区三区四区五区 | 9.1成人看片 | 久久这里 | 国产精品不卡一区 | 天天插综合网 | 蜜桃91丨九色丨蝌蚪91桃色 | 男女免费网站 | 特黄特色大片免费 | 免费一区二区三区 | 国产wwwwwww| 欧美一区三区三区高中清蜜桃 | 黄色在线视频网址 | 午夜日韩欧美 | 爱情岛亚洲首页论坛 | 懂色中文一区二区在线播放 | 黄色一级免费片 | 天堂√在线 | 中文字幕免费高 | 少妇性色av | 国产在线观看成人 | 69精品国产 | 欧美日韩一区二区三区不卡 |