一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

linux下删除某一时间段的文件的方法介绍

时间:2015-03-06 编辑:简简单单 来源:一聚教程网

find查找删除文件

例如从当前目录查找所有以.txt结尾的文件并在屏幕上显示出来,命令行为:

find  .  -name  '*.txt'   -print

查找两个后缀的文件,就改为下面的用法:

find . ( -name *.xml -o -name *.sh )

再如从根目录查找类型为符号连接的文件,并将其删除,命令行为:

find  /  -type  l  -exec  rm {} ;

只查找文件,不包含目录的(该行,不能加--print,加了会报错):

find  . -type f 

又如从当前目录查找用户tom的所有文件并在屏幕上显示,命令行为:

find  .  -user  'tom'   -print

又如显示当前目录中大于20字节的.c文件名,命令行为:

find  . -name  "*.c"  -size  +20c  -print

显示当前目录中恰好10天前访问过的文件名,命令行为:

find  .  -atime  10  -print

显示当前目录中不到10天前访问过的文件名,命令行为:

find  .  -atime  -10  -print

查找/home目录下权限为640的文件或目录,命令行为:

find  /home  -perm 640

搜索根目录下大于100KB的文件,并显示,命令行为:

find  /  -size  +100K  -print

搜索根目录下小于500KB的文件,命令行为:

find  /  -size  -500K  -print

删除文件大小为0的文件

rm -i `find ./ -size 0`
find ./size 0 exec rm {} ;
find ./size 0|xargs rm -rf

在当前目录中查找所有文件名以.doc结尾,且更改时间在5天以上的文件,找到后进行删除,且删除前给出提示,命令行为:

find  .  -name  '*.doc'  -mtime +5  -ok  rm {} ;或
find . -mtime +5 -name "*.*" -exec rm -f {} ; 

自动删除当前目录五天以前的文件
注:后面的反斜杠不能少,不然会报 ”find: 遗漏”-exec”的参数” 。

在当前目录下查找所有链接文件,并以长格式显示文件的基本信息,命令行为:

find  .  -type l  -exec  ls  -l {} ;
lrw-rw-r-- 1 root root 36 07-27 14:34 ./example2
lrw-rw-r-- 1 root root 72 07-27 14:36 ./example3
lrw-rw-r-- 1 root root 36 07-27 14:36 ./example1

在当前目录中查找文件名由一个小写字母、一个大写字母和两个数字组成,且扩展名为.doc的文件,并显示,命令行为:

find  .  -name  ' [a-z][A-Z][0-9][0-9].doc'  -print
查找空文件夹:

find -type d -empty

但是在利用find进行操作时,不难发现两个问题:一是find查找耗费的时间相对较长,二是find查询时较一般的脚本所用的资源要相对大些。而且对于某一个时间段内的文件处理上也不是十分好。所以还是利用普通脚本更实用一些。

例如:我想删除某目录下所有6月份的文件,就可以利用下面的脚本实现:

for filename in *; do if [ `date -r $filename +%m` == "06" ];then rm -f $filename; fi done

date -r, --reference=文件          显示文件指定文件的最后修改时间 。+%m表示只显示月份,如果结果和06是相同的,则执行后面的删除。

而且这样做,我们还可以精确到几点几分,删除本目录下16点生成的文件:

for filename in *; do if [ `date -r $filename +%H` == "16" ];then rm -f $filename; fi done

删除16点22分生成的所有文件:

for filename in *; do if [ `date -r $filename +%H%M == "1622" ];then rm -f $filename; fi done

同理,想要删除某年某月的所有文件也可以使用同样的方法。

热门栏目