LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1483|回复: 11

请教:如何查找修改时间在5分钟内的文件,但是排除某个目录[find . -path ".

[复制链接]
发表于 2005-5-27 22:59:48 | 显示全部楼层 |阅读模式
我要查找当前目录下,修改时间在5分钟内,但是排除一些目录
find . -path "./test" -prune -o -print -cmin -5
这个命令把除了test目录下的所有文件都给列了出来

应该怎么写,谢谢!!!!!
发表于 2005-5-28 00:53:11 | 显示全部楼层
try:

  1. find /path -mmin -5 -path "/path/dir" -prune -o -print
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-31 07:13:53 | 显示全部楼层
这样还是不行
好像会把所有的文件都列出来
我用
find . -cmin -5|wc -l
的结果是108

find . -cmin -5 \( -path "./develop/jboss-4.0.2" -prune -o -print \)|wc -l
的结果是150
find . -cmin -5 -path "./develop/jboss-4.0.2" -prune -o -print|wc -l
的结果是79573
我想要的结果的个数肯定是<=108的
因为去掉了某些不要找的目录
回复 支持 反对

使用道具 举报

发表于 2005-5-31 22:45:34 | 显示全部楼层
find . -path "./test" -prune -o -cmin -5 -print

注意 -print 的位置
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-4 13:11:18 | 显示全部楼层
谢谢mosaics
您的方法完全正确,谢谢!!!
回复 支持 反对

使用道具 举报

发表于 2005-8-30 10:54:26 | 显示全部楼层
谢谢 ,正要找这个~~~~
回复 支持 反对

使用道具 举报

发表于 2005-8-30 14:01:18 | 显示全部楼层
能不能告诉我 -o 是什么意思啊,我查过man手册说是逻辑或的意思,但是在这好象讲不通啊,我在书上也看到过类似的命令,可都没有讲-o 的意思。
回复 支持 反对

使用道具 举报

发表于 2005-9-2 10:53:25 | 显示全部楼层
-o 就是 OR

find . -path "./test" -prune -o -cmin -5 -print

-prune, -print 是 action

现在再看一遍
满足 -path "./test" 我们就 -prune
或者 满足 -cmin -5 我们就 -print

expr1 -o expr2 里面,假如满足了第一个。我们就忽略第二个。在上面的例子中就是 满足 -path "./test" 我们就不会去看 是不是 -cmin -5。

差不多就这么理解吧。
回复 支持 反对

使用道具 举报

发表于 2006-6-10 19:22:17 | 显示全部楼层
-o/-a 只能针对 ACTION 吗?

比如我运行如下的几个命令,结果似乎就不好理解了:
找出 SY05 下 20 分钟内修改的文件:

  1. [glog2db@dell log]$ find SY05 -cmin -20
  2. SY05
  3. SY05/ScenServer03-SY05-log20060430.tar.gz
  4. SY05/ScenServer01-SY05-log20060430.tar.gz
  5. SY05/ScenServer05-SY05-log20060430.tar.gz
  6. SY05/ScenServer02-SY05-log20060430.tar.gz
  7. SY05/ScenServer04-SY05-log20060430.tar.gz
复制代码


意思同上,使用不同的命令,但结果不同:

  1. [glog2db@dell log]$ find . -path './SY05' -a -cmin -20
  2. ./SY05
复制代码


再看这个:

  1. [glog2db@dell log]$ find . -path './SY05' -o -cmin -20 -prune
  2. ./SY03
  3. ./QB06
  4. ./QB09
  5. ./TZ05
  6. ./TZ01
  7. ./SY04
  8. ./YT01
  9. ./CD03
  10. ./QB05
  11. ./TZ06
  12. ./SY05
  13. ./SY05/ScenServer03-SY05-log20060430.tar.gz
  14. ./SY05/ScenServer01-SY05-log20060430.tar.gz
  15. ./SY05/ScenServer05-SY05-log20060430.tar.gz
  16. ./SY05/ScenServer02-SY05-log20060430.tar.gz
  17. ./SY05/ScenServer04-SY05-log20060430.tar.gz
  18. ./QB04
  19. ./YT02
  20. ./TZ04
  21. ./SY02
  22. ./TZ02
  23. ./YT03
  24. ./QB07
  25. ./HY01
  26. ./QB02
  27. ./QB01
  28. ./TZ03
  29. ./SY01
复制代码


困惑中...:ask
回复 支持 反对

使用道具 举报

发表于 2006-6-12 22:49:49 | 显示全部楼层
Post by Chowroc
-o/-a 只能针对 ACTION 吗?

比如我运行如下的几个命令,结果似乎就不好理解了:
找出 SY05 下 20 分钟内修改的文件:

  1. [glog2db@dell log]$ find SY05 -cmin -20
  2. SY05
  3. SY05/ScenServer03-SY05-log20060430.tar.gz
  4. SY05/ScenServer01-SY05-log20060430.tar.gz
  5. SY05/ScenServer05-SY05-log20060430.tar.gz
  6. SY05/ScenServer02-SY05-log20060430.tar.gz
  7. SY05/ScenServer04-SY05-log20060430.tar.gz
复制代码


意思同上,使用不同的命令,但结果不同:

  1. [glog2db@dell log]$ find . -path './SY05' -a -cmin -20
  2. ./SY05
复制代码


再看这个:

  1. [glog2db@dell log]$ find . -path './SY05' -o -cmin -20 -prune
  2. ./SY03
  3. ./QB06
  4. ./QB09
  5. ./TZ05
  6. ./TZ01
  7. ./SY04
  8. ./YT01
  9. ./CD03
  10. ./QB05
  11. ./TZ06
  12. ./SY05
  13. ./SY05/ScenServer03-SY05-log20060430.tar.gz
  14. ./SY05/ScenServer01-SY05-log20060430.tar.gz
  15. ./SY05/ScenServer05-SY05-log20060430.tar.gz
  16. ./SY05/ScenServer02-SY05-log20060430.tar.gz
  17. ./SY05/ScenServer04-SY05-log20060430.tar.gz
  18. ./QB04
  19. ./YT02
  20. ./TZ04
  21. ./SY02
  22. ./TZ02
  23. ./YT03
  24. ./QB07
  25. ./HY01
  26. ./QB02
  27. ./QB01
  28. ./TZ03
  29. ./SY01
复制代码


困惑中...:ask

如果把 find 理解成一个逻辑表达式求值的过程就很好理解了,不区分 action ,action只看成是每次都为真的逻辑表达式。
你那个 find . -path './SY05' -a -cmin -20 的意思就是说,路径匹配 './SYO5' 并且 -cmin -20 的,注意路径匹配的意思,也许你想要的是 './SYO5*'
而后面一个例子也好理解,就是说把前面找到的 './SYO5' -prune 了,我想也许你的初衷可以通过添加括号来实现,同时请注意括号在shell下需要转义。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表