假设/data/test目录下含有数百万上千万的文件需要删除,可以选择的方式如下:

1.如果文件名不包含空白符、引号等特殊字符,则可以使用如下命令:

find /data/test -type f |xargs rm -f

2.如果文件名包含空白符、引号等特殊字符,则在linux中使用如下命令:

find /data/test -type f -print0 |xargs -0 rm -f

而我所用的AIX7.1平台的xargs不支持-0选项,于是决定采用方式3:c语言写段代码删除。

3.c语言删除代码

该代码删除800万量级的文件时可以,删除2000万量级的文件时出现错误:Value too large to be stored in data type,于是又回到使用find ... rm的方法,具体命令参加方法四。

以下代码只假设要删除的目录中全是要删除的文件;如果有子目录,应该做递归删除;如果有条件的删除,可以使用stat函数获取每个文件的信息,然后判断文件信息是否满足删除条件再进行操作。

 #include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h> #define MAX_FILE_NAME_LEN 256 void clean(const char *dirName,int max){
DIR *dir;
struct dirent *ent;
int n=;
char fullFileName[MAX_FILE_NAME_LEN]; dir=opendir(dirName);
if(dir==NULL){
printf("open dir error:%s\n",dirName);
return;
}
while((n<max) && ((ent=readdir(dir))!=NULL) ){
if(strcmp(ent->d_name,".")== || strcmp(ent->d_name,"..")== )
continue;
sprintf(fullFileName,"%s/%s",dirName,ent->d_name); if(remove(fullFileName)==)
printf("delete file ok: %s\n",ent->d_name);
else
printf("delete file fail: %s\n",ent->d_name);
n++;
}
printf("%d files deleted.\n",n);
closedir(dir);
}
void main(int argc,char *argv[]){
char dirName[MAX_FILE_NAME_LEN]="/data/test";
int max=;
if(argc>)
strcpy(dirName,argv[]);
if(argc>)
max=atoi(argv[]);
clean(dirName,max);
}

4.使用find + rm命令删除2000万级的文件

find /data/test -type f -exec rm {} \; &

AIX7.1删除大批量文件(百万级、千万级)的更多相关文章

  1. Linux rm删除大批量文件

    在使用rm删除大批量文件时,有可能会遭遇"参数列太长"(Argument list too long)的问题.如下所示 [oracle@DB-Server bdump]$ rm - ...

  2. Mysql limit 优化,百万至千万级快速分页,--复合索引的引用并应用于轻量级框架

    MySql 性能到底能有多高?用了php半年多,真正如此深入的去思考这个问题还是从前天开始.有过痛苦有过绝望,到现在充满信心!MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新闻 ...

  3. Linux rm删除大批量文件遇到 Argument list too long

    在使用rm删除大批量文件时,有可能会遭遇“参数列太长”(Argument list too long)的问题.如下所示   [oracle@DB-Server bdump]$ rm -v epps_q ...

  4. orcl 如何快速删除表中百万或千万数据

    orcl 数据库表中数据达到上千万时,已经变的特别慢了,所以时不时需要清掉一部分数据. bqh8表中目前有10000000条数据,需要保留19条数据,其余全部清除掉. 以下为个人方法: 1.首先把需要 ...

  5. MySQL 百万级分页优化(Mysql千万级快速分页)

    以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 : SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 : ...

  6. 如何优化MySQL千万级大表

    很好的一篇博客,转载 如何优化MySQL千万级大表 原文链接::https://blog.csdn.net/yangjianrong1985/article/details/102675334 千万级 ...

  7. MySQL 百万级分页优化(Mysql千万级快速分页)(转)

    http://www.jb51.net/article/31868.htm 以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 复制代码 代码如下: SELECT * FROM table OR ...

  8. 【源码】rm zip 删除文件夹中大量的小文件 百万 扫描文件时间

    rm  删除文件夹中大量的小文件 百万 迟迟未删除 在扫描文件? rm删除命令源码分析 - ty_laurel的博客 - CSDN博客 https://blog.csdn.net/ty_laurel/ ...

  9. oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)

    oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录) 分类: ORACLE 数据库 2011-05-24 16:39 8427人阅读 评论(2) 收藏 举报 oracledel ...

随机推荐

  1. [原创] SiteServer 3.5 批量导入文章的SQL处理脚本

    2005时做过一个小网站,当时是用ASP+Access做的,功能很简单,但里面的文章不少 现在就像把它转移到SS上来,重点就是如何导入文章 本来SS本身提供了批量导入功能,但对于在WEB上一次性导入一 ...

  2. 第八章.Spring MVC

    基于MyEclipse开发 工程结构: 所使用到的jar: 代码: FruitControllerTest.java public class FruitControllerTest implemen ...

  3. Maven的一些基本命令

    mvn -v 查看maven版本 compile 编译 test 测试 package 打包 clean 删除target install 安装jar包到项目 使用 archetype 创建目录文件 ...

  4. 解决FileUpload上传大文件报错

    <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedConte ...

  5. Java构造器(构造方法)与方法区别

    构造器,又称为构造方法.构造器用于构造该类的实例,也就是对象. 格式如下:[修饰符]  类名 (形参列表){//n条语句} 构造方法是一种特殊的方法,与一般的方法区别:  1.构造方法的名字必须与定义 ...

  6. 【luogu P1825 [USACO11OPEN]玉米田迷宫Corn Maze】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1825 带有传送门的迷宫问题 #include <cstdio> #include <cst ...

  7. vue路由页面加载的几种方法~

    懒加载 (1)定义:懒加载也叫延迟加载,即在需要的时候进行加载,随用随载. (2)为什么需要懒加载: 在单页应用中,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要 ...

  8. Oracle子查询之高级子查询

    Oracle 高级子查询 高级子查询相对于简单子查询来说,返回的数据行不再是一列,而是多列数据. 1,多列子查询 主查询与子查询返回的多个列进行比较 查询与141号或174号员工的manager_id ...

  9. java servlet数据库查询并将数据显示到jsp页面

    需要的jar包:mysql-connector-java.jar build path只是个jar包的引用,部署的时候想不丢包最好还是手动拷贝到对应项目的lib文件下. 在try{}中定义的变量为局部 ...

  10. SQL语句中生成UUID方法

    SQL语句中生成UUID方法为UUID() 生成带横线UUID: select UUID()                         形如:abaffaca-fd55-11e5-b3d0-d2 ...