jfgsglb 发表于 2011-10-17 14:19

求find 如何只查找指定目录下文件,不进行子目录查询

详细说明:
一:存在一个目录backup,下存在文件
erp_111011.dump.gz
erp_111011.log
..................
.................
....................
及目录his_backup,同时目录his_backup下还存在若干从上级目录归档过来的*.gz及*.log文件
二:
现在希望定期查询出backup目录下的文件,并删除,使用语句
find/backup -type f -name 'erp*'   ,得到结果
/backup/erp_111011.dump.gz
/backup/erp_111011.log
/backup/erp_111013.dump.gz
...........................
.....................
/backup/his_backup/erp_111005.dump.gz
/backup/his_backup/erp_111005.log.
三:
我希望find 在查询时候,指定不上子目录查询,但是目前的查询结果,查询出了子目录中信息,希望高手给予指教

gilet 发表于 2011-10-17 14:50

http://bbs.chinaunix.net/thread-1269369-1-1.html

看着这个能帮楼主不

jfgsglb 发表于 2011-10-17 15:47

感谢,我需要查找出来使用-exec rm {} \;删除,匹配grep 存在问题

yddll 发表于 2011-10-18 13:38

你完全可以rm /backup/erp*.gz

jfgsglb 发表于 2011-10-19 08:48

本帖最后由 jfgsglb 于 2011-10-19 08:50 编辑

回复 4# yddll


    因为空间有限,所以需要保留最近7天的备份,7天以前的自动删除,同时每月最后一天的需要长期保留,所以需要在转移到his_backup目录.不能通过rm /backup/erp*.gz全部删除,现在我是通过 -mtime 7参数处理,但目前还存在上述疑问,请斑竹指教

jfgsglb 发表于 2011-10-20 09:01

急急,现在每天手工处理,最近要出差,希望高手再指点.

jfgsglb 发表于 2011-10-20 09:42

一直没有得到答案,今天通过如下命令解决问题
find /backup -name 'his_backup' -prune -o -mtime 7 -type f -exec rm {} \;

删除7天以前的数据,同时排除在查询时排除his_backup目录.且只查询文件类型对象

可爱小裤衩 发表于 2011-10-20 12:01

回复 7# jfgsglb


   把你的带子目录名的文件过滤掉就是:用grep -v "his_backup/" 所有含有子目录的文件全被滤掉.然后就是你要确定你的子目录和上一级目录是啥.
在没有确定你是对的情况下不要乱rm 否则你要惹祸.

mmxok 发表于 2011-10-20 18:47

回复 7# jfgsglb


    你这个并不是排除目录,只是排除关键字而已~~~aix 里面的find 不支持-PATH 参数~~~~

mmxok 发表于 2011-10-20 18:50

回复 8# 可爱小裤衩


    敢问斑竹,有没有办法是让系统跳过一个目录(包括子目录),就是根本不在要排除的目录里面查找。

用grep 过滤只是结果上滤掉了要排除的目录,实际上系统还是搜索了全部的内容,这样浪费了时间和资源啊~~~~
谢谢!
页: [1] 2
查看完整版本: 求find 如何只查找指定目录下文件,不进行子目录查询