linux系统编程----统计一个目录下的普通文件个数
主要是为了统计linux系统下一个指定目录下面的普通文件个数,运用目录操作的一些函数,配合递归调用来实现该功能。
首先介绍一下函数原型:
打开一个空目录
DIR *opendir(const char *name);
参数: 目录名
返回值: 指向目录的指针
读目录
struct dirent *readdir(DIR *dirp);
参数: opendir的返回值
返回值: 指向目录的指针
关闭目录
int closedir(DIR *dirp);
代码实现:readfileNum.c
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <dirent.h> 5 #include <sys/types.h> 6 7 8 int get_file_num(char* root) 9 { 10 int total = 0; 11 DIR* dir = NULL; 12 // 打开目录 13 dir = opendir(root); 14 // www.qixoo.qixoo.com 循环从目录中读文件 15 16 char path[1024]; 17 // 定义记录目录指针 18 struct dirent* ptr = NULL; 19 while( (ptr = readdir(dir)) != NULL) 20 { 21 // 跳过. 和 .. 22 if(strcmp(ptr->d_name, ".") == 0 || strcmp(ptr->d_name, "..") == 0) 23 { 24 continue; 25 } 26 // 判断是不是目录 27 if(ptr->d_type == DT_DIR) 28 { 29 sprintf(path, "%s/%s", root, ptr->d_name); 30 // 递归读目录 31 total += get_file_num(path); 32 } 33 // 如果是普通文件 34 if(ptr->d_type == DT_REG) 35 { 36 total ++; 37 } 38 } 39 closedir(dir); 40 return total; 41 } 42 43 int main(int argc, char* argv[]) 44 { 45 if(argc < 2) 46 { 47 printf("./a.out path"); 48 exit(1); 49 } 50 51 int total = get_file_num(argv[1]); 52 printf("%s has regfile number: %d\n", argv[1], total); 53 return 0; 54 }
效果展示:
linux系统编程----统计一个目录下的普通文件个数的更多相关文章
- Linux Shell删除某一个目录下的所有文件夹(保留其他文件)
#!/bin/bash direc=$(pwd) for dir2del in $direc/* ; do if [ -d $dir2del ]; then rm -rf $dir2del fi do ...
- Linux递归解压缩一个目录下的全部文件
gunzip -r hongchangfirst/data 怎样递归删除那些剩余的非log结尾的文件? 先列出确认一下: find hongchangfirst/data -type f ! -nam ...
- linux面试题:删除一个目录下的所有文件,但保留一个指定文件
面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10 十个文件 [root@oldboy xx]# touch ...
- Linux:删除一个目录下的所有文件,但保留一个指定文件
面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10 十个文件 [root@oldboy xx]# touc ...
- linux-删除一个目录下的所有文件,但保留某个或者多个指定文件
Linux:删除一个目录下的所有文件,但保留一个指定文件 面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10 ...
- Python读取一个目录下的所有文件
#!/usr/bin/python # -*- coding:utf8 -*- import os allFileNum = 0 def printPath(level, path): global ...
- Python:遍历一个目录下所有的文件及文件夹,然后计算每个文件的字符和line的小程序
编写了一个遍历一个目录下所有的文件及文件夹,然后计算每个文件的字符和line的小程序,先把程序贴出来. #coding=utf-8 ''' Created on 2014年7月14日 @author: ...
- python 删除一个目录下的所有文件
一个目录下有文件,文件夹,文件夹里又有文件.文件夹....用python脚本,实现,递归删除一个目录下的所有文件: 目录结构如下: 其中我们要删除所有文件 代码实现如下: import os CUR_ ...
- Java遍历一个目录下的所有文件
Java遍历一个目录下的所有文件 Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其他流类不同的是,流类关心的是文件的内容,而File类关心的是磁盘上文件的存 ...
随机推荐
- 自定义WPF ListBox的选中项样式
首先介绍一种简单地方法:就是通过自定义SystemColors类的参数来自定义WPF ListBox选择颜色的,SystemColors的HighlightBrushKey和HighlightText ...
- C语言 简单的栈
//简单的栈 #include<stdio.h> #include<stdlib.h> //栈的介绍:栈先进后出,一般用于将数据逆序输出 //栈一般只有四种方法--进栈,出栈, ...
- AS2.0大步更新 Google强势逆天
New Features in Android Studio 2.0Instant Run: Faster Build & Deploy逆天吗?你还在羡慕iOS的playground吗?And ...
- 信息安全系统设计基础exp_1
详见搭档20135322郑伟博客链接:http://www.cnblogs.com/zhengwei0712/
- Python Web实战 - 基于Flask实现的黄金点游戏
一.简介 团队成员: 领航者:张旭 驾驶员:张国庆 项目简介: 项目名称:基于B/S模式的黄金点游戏 采用技术: 后端:Python + Sqlite3 前端:HTML + CSS + JS + Bo ...
- RxJava简介
RxJava简介 本文为前段时间学习RxJava时留下的历史遗留笔记,仅作纪念,科学的大神教学帖子在这里-> 给 Android 开发者的 RxJava 详解 通过链式调用序列实现基于事件流的异 ...
- iOS适配HTTPS,创建一个自签名的SSL证书(x509)具体步骤
引言(创建生成的证书只能用于测试使用.如果想使用自签名证书就只能以自己为 CA机构颁发证书,进行双向认证才能使用) 使用HTTP(超文本传输)协议访问互联网上的数据是没有经过加密的.也就是说,任何人都 ...
- 集DDD,TDD,SOLID,MVVM,DI,EF,Angularjs等于一身的.NET(C#)开源可扩展电商系统–Virto Commerce
今天一大早来看到园友分享的福利<分享一个前后端分离方案源码-前端angularjs+requirejs+dhtmlx 后端asp.net webapi>,我也来分享一个吧.以下内容由笔者写 ...
- js1常用的东西
1 .ready 与resize方法.$(inject).ready(function() { var windowWidth = $(document.body).outerWidth(true); ...
- 23.C#Queryable的扩展方法(十二章12.1-12.2)
今天要写的知识还真心有点绕呢,对于第一节的内容,其实是把原先在内存中的数据源,换成了从数据库中提取出来的数据.从代码的使用方式上是一样的,直接跳过,来看看IEnumerable和IQueryable的 ...