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即可。