linux 批量删除(linux快速删除几十万个文件)

大家好,今天来为大家分享linux 批量删除的一些知识点,和linux快速删除几十万个文件的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

在Linux系统中批量删除多个文件的方法总结

当我们在linux系统中要删除数万或者数十万甚至数百万的文件时使用rm-rf*就不太好用,因为要等待很长一段时间。在这种情况之下我们可以使用linux系统命令rsync来巧妙的处理。rsync实际上用的是替换原理,处理数十万个文件也是秒删。

1. rsync安装,有些系统默认安装有该命令

ubuntu系统:

代码如下:

sudo apt-get install rsync

fedora系统:

代码如下:

sudo yum install rsync

其他的可以源码安装,到下面的网站下载

2. rsync提供了一些跟删除有关的参数

rsync--help| grep delete

--del an alias for--delete-during

--delete delete extraneous files from destination dirs

--delete-before receiver deletes before transfer, not during

--delete-during receiver deletes during transfer(default)

--delete-delay find deletions during, delete after

--delete-after receiver deletes after transfer, not during

--delete-excluded also delete excluded files from destination dirs

--ignore-errors delete even if there are I/O errors

--max-delete=NUM don't delete more than NUM files

其中--delete-before接收者在传输之前进行删除操作

3.示例

清空目录或文件,如下:

1、先建立一个空目录

代码如下:

mkdir/data/blank

2、用rsync删除目标目录

代码如下:

rsync--delete-before-d-a-H-v--progress--stats/data/blank//var/edatacache/

或者

代码如下:

rsync--delete-before-d/data/blank//var/edatacache/

这样/var/edatacache目录就被快速的清空了。

选项说明:

–delete-before接收者在传输之前进行删除操作

–progress在传输时显示传输过程

-a归档模式,表示以递归方式传输文件,并保持所有文件属性

-H保持硬连接的文件

-v详细输出模式

–stats给出某些文件的传输状态

-d transfer directories without recursing

删除文件夹

如果大量小文件都集中在几个目录中,那么这个方法就有用了。

代码如下:

rm-f/var/log/httpd/access.log

将会强制删除/var/log/httpd/access.log这个文件

-r就是向下递归,不管有多少级目录,一并删除

-f就是直接强行删除,不作任何提示的意思

-i进行交互式删除。

提示:使用rm命令要小心。因为一旦文件被删除,它是不能被恢复的。了防止这种情况的发生,可以使用i选项来逐个确认要删除的文件。如果用户输入y,文件将被删除。如果输入任何其他东西,文件则不会删除。

使用这个rm-rf删除文件的时候一定要格外小心,linux没有回收站的。

rm-r目录名:

将子目录及子目录中所有档案删除

代码如下:

[root@localhost test]# ls-l

总计 24drwxr-xr-x 7 root root 4096 10-25 18:07 scf

drwxr-xr-x 2 root root 4096 10-26 14:51 test1

drwxr-xr-x 3 root root 4096 10-25 17:44 test2

drwxrwxrwx 2 root root 4096 10-25 17:46 test3

drwxr-xr-x 2 root root 4096 10-25 17:56 test4

drwxr-xr-x 3 root root 4096 10-25 17:56 test5

代码如下:

[root@localhost test]# rm-r test1

rm:是否进入目录“test1”? y

rm:是否删除一般文件“test1/log3.log”? y

rm:是否删除目录“test1”? y

代码如下:

[root@localhost test]# ls-l

总计 20drwxr-xr-x 7 root root 4096 10-25 18:07 scf

drwxr-xr-x 3 root root 4096 10-25 17:44 test2

drwxrwxrwx 2 root root 4096 10-25 17:46 test3

drwxr-xr-x 2 root root 4096 10-25 17:56 test4

drwxr-xr-x 3 root root 4096 10-25 17:56 test5

[root@localhost test]#

rm-rf目录名:

把子目录及子目录中所有档案删除,并且不用一一确认

代码如下:

[root@localhost test]# rm-rf test2

[root@localhost test]# ls-l

总计 16drwxr-xr-x 7 root root 4096 10-25 18:07 scf

drwxrwxrwx 2 root root 4096 10-25 17:46 test3

drwxr-xr-x 2 root root 4096 10-25 17:56 test4

drwxr-xr-x 3 root root 4096 10-25 17:56 test5

[root@localhost test]#

linux系统中的批量删除文件与空文件删除的命令介绍

linux下面删除文件或者目录命令rm(remove)

功能说明:删除文件或目录。

语法:rm [-dfirv][--help][--version][文件或目录...]

补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件。

参数:

-d或--directory直接把欲删除的目录的硬连接数据删成0,删除该目录。

-f或--force强制删除文件或目录。

-i或--interactive删除既有文件或目录之前先询问用户。

-r或-R或--recursive递归处理,将指定目录下的所有文件及子目录一并处理。

-v或--verbose显示指令执行过程。

--help在线帮助。

Linux下批量删除空文件(大小等于0的文件)的方法

代码如下

find.-name"*"-type f-size 0c| xargs-n 1 rm-f

用这个还可以删除指定大小的文件,只要修改对应的-size参数就行,例如:

代码如下

find.-name"*"-type f-size 1024c| xargs-n 1 rm-f

就是删除1k大小的文件。(但注意不要用-size 1k,这个得到的是占用空间1k,不是文件大小1k的)。

如果只要删除文件夹或者名字连接等,可以相应的改-type参数,具体细节见 man find

删除N天前文件

LINUX按时间批量删除文件(删除N天前文件)

代码如下

find/opt/Oracle/admin/CCXE/bdump/-mtime+10-name"*.*"-exec rm-Rf{};

/opt/Oracle/admin/CCXE/bdump/:想要进行清理的任意目录

-mtime:标准语句写法

+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件

"*.*":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件

-exec:固定写法

rm-rf:强制删除文件,包括目录

{};:固定写法,一对大括号+空格+/+;

彻底删除文件

有些时候我们要彻底删除一些文件,可以使用shred命令来实现,shred是coreutils的一部分,所以Linux中基本都会有这个命令。

shred彻底删除文件的方法:

代码如下

$ shred-u file

shred会用一些随机内容覆盖文件所在的节点和数据块,并删除文件(-u参数)。

如果想清除的更彻底一点可以加-z参数,意思是先用随机数据填充,最后再用0填充。

代码如下

$ shred-u-z file

另外shred还可以清除整个分区或磁盘,比如想彻底清除/dev/sdb1分区的内容可以这样:

$ shred/dev/sdb1(注意不要加-u参数)

shred的详细参数:

-f,--force更改权限允许写入(如有必要)

-n,--iterations=N重写N次,默认为3次

--random-source=FILE从指定文件读取数据

-s,--size=N将文件粉碎为固定大小(可使用后缀如K、M、C等)

-u,--remove重写后截短并移除文件

-v,--verbose显示进度

-z,--zero- add用0覆盖数据

–help显示帮助

–version显示版本信息

linux下使用通配符批量删除文件

一、cd命令进入这个linux文件夹目录。

二、打:

find.-type f-name*.log-mtime+x-exec rm-fv{}\;

命令作用:在当前目录下查找x天前的后缀为log的文件并且删除。

例:

find.-type f-name*.log-mtime+300-exec rm-fv{}\;

查找300天前的后缀名为log的文件并且删除。

命令详细解释:

.在当前目录下查找,如果要全盘查找的话,可以把.换成/,这样前面的cd命令就不需要了。

-type f查找的是普通文件,而不是文件夹

-name*.log查找后缀为log的文件

-mtime+x查找x天以前的文件,所以需要把这个x换成你自己需要查找的天数,比如30.你要删除20090808以前的,就需要计算一下,它距离现在多少天。

-exec rm-fv{}\;把查找的文件强制删除

如果权限不足,请以root身份运行命令。

如果是ubuntu,前面可以加sudo即可。

阅读剩余
THE END