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语言删除目录下文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Linux之删除带有空格的文件(不是目录)

    大家平时工作中对不带空格的文件接触较多.这样一来删除操作也是比较简单的.但是有时我们会接触带有空格的文件.对于这种文件我们应该如何删除呢? 首先我们演示一下find命令结合xargs命令删除不带空格的文件 [root@ELK-chaofeng test]# touch 1.txt 2.txt [root@ELK-chaofeng test]# ls 1.txt 2.txt [root@ELK-chaofeng test]# find . -type f | xargs ./1.txt ./2.t

  • Linux删除目录下的文件的10种方法小结

    看到了一遍文章,便突发奇想的想起Linux中删除目录下的所有文件的方法:整理了几个,如有不足,还望读者不吝赐教! 删除当前目录下的文件 1.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

  • Linux 删除特殊字符文件名或目录的方法

    通过文件的inode号删除文件 先用ls -i 找出要删除文件的inode 号 ls -i |grep xxxxxx|awk '{print $2}'|xargs -i rm -f {} xxxxxx为文件的 inode 号 通过文件大小删除文件 删除当前目录以及所有子目录下的文件大小为零的文件 find ./ -size 0 -exec rm {} \; 删除当前目录下文件大小为零的文件(子目录不删除) find ./ -maxdepth 1 -empty -type f -print -de

  • Linux利用lsof/extundelete工具恢复误删除的文件或目录

    前言 Linux不像windows有那么显眼的回收站,不是简单的还原就可以了. linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原.这里分别检查介绍下 一,误删除文件进程还在的情况. 这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在.这也就是有些服务器删除一些文件但是磁盘不释放的原因.比如当前举例说明: 通过一个shell终端对一个测试文件做cat追加操作: [root@21yunwei_ba

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

    利用c语言删除目录下文件 最近这段时间工作内容是关于Linux下的简单文件操作,以前对于Linux系统下的文件操作函数都不是太熟悉,经过这次实践,对这些函数使用有了一定的了解 如何创建文件,读写文件,这些简单的我想大家应该是比较熟悉的,我所介绍的是如何遍历某个目录,并且删除该目录下的文件(可以指定后缀名),并且也可以指定 文件的修改时间范围(多少小时以前的旧文件可以删除),下面就是简单的函数实现,仅供初学者参考(毕竟我也是初学者\(^o^)/~) #include <stdio.h> #inc

  • php实现删除指定目录下相关文件的方法

    本文实例讲述了php实现删除指定目录下相关文件的方法.分享给大家供大家参考.具体实现方法如下: 通常来说在php中删除文件最简单的方法就是直接使用unlink命令,而对于需要删除指定目录下的指定文件的情况,就需要遍历删除了. 具体实例代码如下: 复制代码 代码如下: <?php  //删除指定文件夹下的非法文件  function my_del($dir)  {     if(is_dir($dir)){         //打开指定文件夹         if($handle = opendi

  • Python删除指定目录下过期文件的2个脚本分享

    脚本1: 这两天用python写了一个删除指定目录下过期时间的脚本.也可能是我初学python,对python还不够熟习,总觉得这个脚本用shell写应该更简单也更容易些.就功能上来说,该脚本已经实现了我想要的效果,不过该脚本还不够通用性,还有更多可以完善的地方.目前该脚本在python2.4下运行良好.同时,我在脚本中加入了对python版本的判断,理论上2.7下也应该可以正常使用.有环境的朋友可以帮忙测试一下.该脚本不完善的地方在于,只能支持一级目录下的文件删除,还不支持目录递归.同时过期文

  • php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码

    web 开发中我们可能会碰到需要将某个目录下的所有文件清空,但不删除这个目录下的子目录(当然也不会删除被删除的根目录)的情况.那么对于这种只删除文件而不删除目录的方法,你是如何处理的呢?下面博主将要和你分享一下对于这个问题的一种比较好的解决办法.看下面这个函数: /*删除指定目录下的文件,不删除目录文件夹*/ function delFile($dirName){ if(file_exists($dirName) && $handle=opendir($dirName)){ while(f

  • PHP unlink与rmdir删除目录及目录下所有文件实例代码

    在php中删除文件与目录其实很简单只要两个函数一个是unlink一个rmdir函数,如果要实现删除目录及目录下的文件我们需要利用递归来操作. 函数代码:仅删除指定目录下的文件,不删除目录文件夹,代码如下: class shanchu { //循环目录下的所有文件 function delFileUnderDir( $dirName="../Smarty/templates/templates_c" ) { if ( $handle = opendir( "$dirName&q

  • PHP删除目录及目录下所有文件的方法详解

    函数代码一:删除目录及目录下的所有文件 复制代码 代码如下: //循环删除目录和文件函数function delDirAndFile( $dirName ){if ( $handle = opendir( "$dirName" ) ) {while ( false !== ( $item = readdir( $handle ) ) ) {if ( $item != "." && $item != ".." ) {if ( is_

  • Linux中移除(删除)符号链接的命令

    你可能有时需要在 Linux 上创建或者删除符号链接.如果有,你知道该怎样做吗?之前你做过吗?你踩坑没有?如果你踩过坑,那没什么问题.如果还没有,别担心,我们将在这里帮助你. 使用 rm 和 unlink 命令就能完成移除(删除)符号链接的操作. 什么是符号链接? 符号链接(symlink)又称软链接,它是一种特殊的文件类型,在 Linux 中该文件指向另一个文件或者目录.它类似于 Windows 中的快捷方式.它能在相同或者不同的文件系统或分区中指向一个文件或着目录. 符号链接通常用来链接库文

  • 在 Linux 中不使用 CD 命令进入目录/文件夹的方法

    众所周知,如果没有 cd 命令,我们无法 Linux 中切换目录.这个没错,但我们有一个名为 shopt 的 Linux 内置命令能帮助我们解决这个问题. shopt 是一个 shell 内置命令,用于设置和取消设置各种 bash shell 选项,由于它已安装,因此我们不需要再次安装它. 是的,我们可以在启用此选项后,可以不使用 cd 命令切换目录. 我们将在本文中向你展示如何操作.这是一个小的调整,但对于那些从 Windows 迁移到 Linux 的新手来说非常有用. 这对 Linux 管理

  • Linux中shell脚本获取当前工作目录的方法

    如下: workdir=$(cd $(dirname $0); pwd) 步骤1 dirname $0,取得当前执行的脚本文件的父目录 步骤2 cd到父目录,即进入当前工作目录 步骤3 pwd显示当前工作目录 以上这篇Linux中shell脚本获取当前工作目录的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 利用 python 对目录下的文件进行过滤删除

    前言 最近学习了python,感觉挺多地方能用到它的.打包 测试 上传 爬电影....而且代码量是真少.人生苦短,我用python.而今天写的这个是因为下载电影时总会发现除了视频还会有这两个文件,甚至更多乱七八糟的文件 看着这些文件很不舒服.一个个文件夹的删太费劲了.还要注意不能误删.于是这个脚本就出来了"根据扩展名过滤删除文件",下面话不多说了,来一起看看详细的介绍吧. Step1 首先需要一个参数配置文件FilterParameter.py formatFiles需要过滤的扩展名

随机推荐