Linux中利用c语言删除某个目录下的文件_C 语言

来源:脚本之家  责任编辑:小易  

利用c语言删除目录下文件

最近这段时间工作内容是关于Linux下的简单文件操作,以前对于Linux系统下的文件操作函数都不是太熟悉,经过这次实践,对这些函数使用有了一定的了解

如何创建文件,读写文件,这些简单的我想大家应该是比较熟悉的,我所介绍的是如何遍历某个目录,并且删除该目录下的文件(可以指定后缀名),并且也可以指定

文件的修改时间范围(多少小时以前的旧文件可以删除),下面就是简单的函数实现,仅供初学者参考(毕竟我也是初学者\(^o^)/~)

#include <stdio.h>
#include <fcntl.h> 
#include <time.h> 
#include <string.h>
#include <dirent.h>
#include <sys/stat.h>
#include <unistd.h>
 
#define FILE_MAX_LEN 256
 
void rmv_old_files(const char *path, const char *suf, int hours)
{	
	char filename[FILE_MAX_LEN] = {0};
	struct tm *TM;
	struct dirent *dirp;
	struct stat statbuf;
	DIR *dp = NULL;
	time_t curr_time;
	int nameLen, offset;
	char *chTemp = NULL;
	
	curr_time = time((time_t*)NULL);
	dp = opendir(path);
	if (NULL == dp)
	{
		return;
	}	
	while((dirp=readdir(dp)) != NULL)
	{
		if (strcmp(dirp->d_name, ".")==0 || strcmp(dirp->d_name, "..")==0)
		{
			continue;
		}
		nameLen = strlen(dirp->d_name);
		chTemp = dirp->d_name;
		if (*suf != '\0')
		{
			offset = nameLen-strlen(suf);
			if (offset<0 || strncmp(suf, chTemp+offset, strlen(suf))!=0)
			{
				continue;
			}
		}
		sprintf(filename, "%s%s", path, dirp->d_name);
		if (!stat(filename, &statbuf))
		{
			/*check the st_mtime of the file, if more than retention_hours ago then delete it*/
			if (curr_time-statbuf.st_mtime >= hours*3600 && S_ISREG(statbuf.st_mode))
			{
				unlink(filename);
			}
		}			
	}
	closedir(dp);
}

附:linux删除指定目录下的文件命令

rm -f 指定目录*

#最经典的方法,删除指定目录下的所有类型的文件

2.find 指定目录 -type f -delete或find 指定目录 -type f -exec rm -f {} \;

#用find命令查找指定目录下的所有普通文件并删除or用find命令的处理动作将其删除

3.find 指定目录 -type f | xargs rm -f

#用于参数列表过长;要删除的文件太多

4.rm-f `find 指定目录 -type f`

#删除指定目录下的全部普通文件

5.for delete in `ls –l 指定目录路径`;do rm -f * ;done

#用for循环语句删除指定目录下的所有类型的文件

总结

到此这篇关于Linux中利用c语言删除某个目录下文件的文章就介绍到这了,更多相关Linux用c语言删除目录下文件内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:Linux删除目录下的文件的10种方法小结Linux 删除特殊字符文件名或目录的方法Linux之删除带有空格的文件(不是目录)Linux利用lsof/extundelete工具恢复误删除的文件或目录

  • 本文相关:
  • c语言中十进制转二进制显示小工具的实现代码
  • c实现不定长数组的示例
  • 利用c语言编写“剪刀石头布”小游戏
  • c++全排列中递归交换法实例详解
  • wxwidgets自定义按钮的方法
  • 使用c语言编写基于tcp协议的socket通讯程序实例分享
  • 如何解决c语言,函数名与宏冲突
  • 北邮考研复试c语言上机题目精选
  • c++中四种加密算法之aes源代码
  • c++ coroutine简单学习教程
  • 在Linux虚拟文件系统里如何代码实现(C语言):在...
  • linux中c语言怎么删除指定文件
  • linux下C语言怎么统计某个目录下的文件个数
  • linux c语言 进入一个 文件夹 删除里面的空文件
  • linux下C语言编程,包含目录和引用库文件?
  • linux的vim 下怎么用C语言通过调用函数来删除一个文件
  • 在linux下,写一个c语言程序把一个文件的内容写入另...
  • linux下怎样用c语言做实时监控目录中文件数量变化...
  • linux下c语言写入文件怎样指定文件路径
  • ·1.已知Linux下的一个C语言程序代码写 在两个源文...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言其它相关首页linux删除目录下的文件的10种方法小结linux 删除特殊字符文件名或目录的方法linux之删除带有空格的文件(不是目录)linux利用lsof/extundelete工具恢复误删除的文件或目录c语言中十进制转二进制显示小工具的实现代码c实现不定长数组的示例利用c语言编写“剪刀石头布”小游戏c++全排列中递归交换法实例详解wxwidgets自定义按钮的方法使用c语言编写基于tcp协议的socket通讯程序实例分享如何解决c语言,函数名与宏冲突北邮考研复试c语言上机题目精选c++中四种加密算法之aes源代码c++ coroutine简单学习教程c语言程序设计50例(经典收藏)c语言10个经典小程序c语言字符串操作总结大全(超详细c语言文件操作函数大全(超详细)c语言运算符优先级列表(超详细)c语言字符数组与字符串的使用详解c语言/c++中如何产生随机数c++中的string常用函数用法总结深入理解c++中public、protectedc++常用字符串分割方法实例汇总c语言对堆排序一个算法思路和实现代码c++设计模式之模板方法模式(templatemetatoi和itoa函数的实现方法嵌入式c实战项目开发技巧:对一个有规律的c/c++读写文本文件、二进制文件的方法浅谈哈希表存储效率一般不超过50%的原因c++ 模版双向链表的实现详解使用c++中string实现任意长度的正小数、整基于c++的拼多多算法在线笔试题示例c语言实现查看进程是否存在的方法示例
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved