zoukankan      html  css  js  c++  java
  • 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 != '')

    {

    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删除指定目录下的文件命令

    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-f `find 指定目录 -type f`

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

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

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

    总结

    到此利用c语言删除某个目录下文件的文章就介绍到这了。最后,特别推荐一个分享C/C++和算法的优质内容,学习交流,技术探讨,面试指导,简历修改...还有超多源码素材等学习资料,零基础的视频等着你!

    还没关注的小伙伴,可以长按关注一下:


     
  • 相关阅读:
    Dual Boot WINDOWS 10 and KALI LINUX Easily STEP BY STEP GUIDE截图
    【Head First Servlets and JSP】笔记8:监听者
    【网络】TCP的流量控制
    【Nginx】I/O多路转接之select、poll、epoll
    【Nginx】ngx_event_core_module事件模块
    【网络】TCP协议
    【网络】运输层
    【APUE】进程间通信之FIFO
    【APUE】文件I/O
    【c++】c++一些基础面试题
  • 原文地址:https://www.cnblogs.com/mu-ge/p/14500190.html
Copyright © 2011-2022 走看看