LinuxSir.cn,穿越时空的Linuxsir!

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

find查询时忽略某个目录(谢谢了!)

[复制链接]
发表于 2009-7-21 12:40:11 | 显示全部楼层 |阅读模式
例如:我想查询/home/test目录下的所有的*.txt 文件,但不想包含/home/test/svn目录,
我的写法是:
find /home/test   "/home/test/svn" -prune -o  -name   "*.txt"
但这样不对!

麻烦各位老大帮下忙了。
谢谢!
发表于 2009-7-21 12:56:06 | 显示全部楼层
似乎用法不对
  1. find /home/test -wholename '/home/test/svn' -prune -o -name '*.txt'
复制代码

另外还有一个比较低效的方法, 但是很直观
  1. find /home/text -name '*.txt' | grep -v -e '^/home/test/svn\>'
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-21 13:13:29 | 显示全部楼层
仿佛第一句find /home/test -wholename '/home/test/svn' -prune -o -name '*.txt'

-wholename  不能被识别:
提示如下:
find: invalid predicate `-wholename'
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-21 13:28:49 | 显示全部楼层
[root@localhost xiaojie]# find  /home/xiaojie/  -path "/home/xiaojie/host" -prune -o -name "[a-z][a-z][0-9][0-9].java" -print
/home/xiaojie/ab12.java
[root@localhost xiaojie]# find  /home/xiaojie/  -path "/home/xiaojie/host" -prune -o -name "[a-z][a-z][0-9][0-9].java"
/home/xiaojie/host
/home/xiaojie/ab12.java
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-21 13:29:49 | 显示全部楼层
显然, 必须加上-print就完全达到要求了。
谢谢remote fish兄弟
回复 支持 反对

使用道具 举报

发表于 2009-7-21 16:35:58 | 显示全部楼层
看来我这里的 find 版本太高了
回复 支持 反对

使用道具 举报

发表于 2009-7-31 11:33:38 | 显示全部楼层
find /home/test -path /home/test/bin -prune -o -name *.txt -print
回复 支持 反对

使用道具 举报

发表于 2009-8-3 13:36:36 | 显示全部楼层
Post by qingheliu;2008096
显然, 必须加上-print就完全达到要求了。
谢谢remote fish兄弟


[jason@file ~]$ find /home -path /home/jason/boy/ -prune -o -name b -print
/home/jason/test/b
/home/jason/b
/home/jason/boy/b
[jason@file ~]$
[jason@file ~]$ find /home -wholename /home/jason/boy/ -prune -o -name b -print
/home/jason/test/b
/home/jason/b
/home/jason/boy/b
[jason@file ~]$
感觉没有什么效果啊!
回复 支持 反对

使用道具 举报

发表于 2009-8-4 09:39:18 | 显示全部楼层
也许 bobobian 兄愿意检查一下自己的 find 命令的版本?
  1. $ cd /dev/shm/
  2. $ mkdir test boy
  3. $ touch test/b boy/b
  4. $ find -name b
  5. ./boy/b
  6. ./test/b
  7. $ find /dev/shm -path /dev/shm/boy -prune -o -name b -print
  8. /dev/shm/test/b
  9. $ find /dev/shm -wholename /dev/shm/boy -prune -o -name b -print
  10. /dev/shm/test/b
  11. $ find --version
  12. find (GNU findutils) 4.4.2
  13. Copyright (C) 2007 Free Software Foundation, Inc.
  14. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  15. This is free software: you are free to change and redistribute it.
  16. There is NO WARRANTY, to the extent permitted by law.
  17. Written by Eric B. Decker, James Youngman, and Kevin Dalley.
  18. Built using GNU gnulib version e5573b1bad88bfabcda181b9e0125fb0c52b7d3b
  19. Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS() CBO(level=0)
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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