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

 更新时间:2021年01月12日 10:55:06   作者:kakashi0309  
这篇文章主要给大家介绍了Linux中利用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语言删除目录下文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++ 中 vector 的常用操作方法汇总

    C++ 中 vector 的常用操作方法汇总

    在C++的STL中,vector是一个动态数组,可以在运行时调整大小,本文介绍了vector的初始化、元素访问、修改、迭代器操作、容量管理以及性能优化技巧,通过这些操作,可以有效地使用vector管理数据,本文介绍C++  vector 操作,感兴趣的朋友一起看看吧
    2024-10-10
  • C++程序中启动线程的方法

    C++程序中启动线程的方法

    这篇文章主要介绍了C++程序中启动线程的方法,作者针对C++11版本中的一些新特性进行了解说,需要的朋友可以参考下
    2015-07-07
  • c语言中全局变量的设置方式

    c语言中全局变量的设置方式

    这篇文章主要介绍了c语言中全局变量的设置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • C++实现控制台版扫雷程序

    C++实现控制台版扫雷程序

    这篇文章主要为大家详细介绍了C++实现控制台版扫雷程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C语言的指针类型详细解析

    C语言的指针类型详细解析

    C语言的指针类型包括两方面的信息:一是地址,存放在指针变量中;二是类型信息,关乎于读写的长度,没有存储在指针变量中,位于用该指针读写时的mov指令中,不同的读写长度对应的mov指令不同
    2013-09-09
  • 数据结构之Treap详解

    数据结构之Treap详解

    这篇文章主要介绍了数据结构之Treap详解,本文讲解了Treap的基本知识、Treap的基本操作、Treap的高级操作技巧等,需要的朋友可以参考下
    2014-08-08
  • C++之内存泄漏排查详解

    C++之内存泄漏排查详解

    这篇文章主要介绍了c++ 如何排查内存泄漏,帮助大家更好的理解和学习使用c++,感兴趣的朋友可以了解下,希望能够给你带来帮助
    2021-10-10
  • 利用C++开发一个protobuf动态解析工具

    利用C++开发一个protobuf动态解析工具

    数据库中存储的protobuf序列化的内容,有时候查问题想直接解析查看内容。很多编码在网上很容易找到编解码工具,但protobuf没有找到编解码工具,可能这样的需求比较少吧,那就自己用C++实现一个,感兴趣的可以了解一下
    2023-01-01
  • Qt读取Json文件的方法详解(含源码+注释)

    Qt读取Json文件的方法详解(含源码+注释)

    QT本身就有读取json的接口,简单又方便,下面这篇文章主要给大家介绍了关于Qt读取Json文件(含源码+注释)的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • Qt QWidget实现图片旋转动画

    Qt QWidget实现图片旋转动画

    这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12

最新评论