红联Linux门户
Linux帮助

关于find命令正则表达式

发布时间:2010-04-06 21:18:22来源:红联作者:blackgenius
[i=s] 本帖最后由 blackgenius 于 2010-4-7 10:31 编辑 [/i]

在shell命令中常常用到find查找文件,有时候突然有好多个不同类型的文件需要一起查询,这时候会用到通配符和正则表达式,但是常常遇到以外或者得到意向不到的结果,向各位请教一下几个情况,为什么会出现?
find . -name *c #或者
find . -name *.c #或者
find . -name *.txt #这个就报错了~shell把find命令的语法规则列了一遍 ?orz

find . -name "*.txt" #这个就对了,可以列出该有的

find . -name "*.[c,txt]" #或者
find . -name "*.[txt,c]" #都列出.c结尾的文件而不列出.txt结尾的文件

find . -name "*[c,txt]" #或者
find . -name "*[c|txt]" #都列出了所有.c文件和包含有txt,t*t结尾的文件和目录 ?orz

请教高手指点迷津,如果要一条命令里面同时查询.txt .c .sh .sql结尾的命令,如何实现?先谢过!


终于知道了,还是正则表达式用法不熟悉,正解应该是:
find . -regex ".*\.\(txt\|sh\)"
find . -name "*.sh" -o -name "*.txt"
文章评论

共有 8 条评论

  1. songinlinux110 于 2011-08-26 09:36:12发表:

    没错? find -name *.php 试试,除了index.php能找到,什么都找不到
    find -name "*.php" 却可以都找到

  2. dlshanghai 于 2011-07-22 13:35:59发表:

    学习一下:0)1

  3. ICEEN 于 2011-05-04 16:32:51发表:

    真是………………

  4. byaries 于 2010-10-30 21:27:23发表:

    学习了

  5. duo2752 于 2010-04-07 12:34:32发表:

    find 和 正则都不是白给的

  6. 孔仔 于 2010-04-07 12:33:16发表:

    :0w5ty(1

  7. xlsogb 于 2010-04-07 08:18:38发表:

    帮顶

  8. alick 于 2010-04-06 22:43:28发表:

    引用:
    find . -name *.txt

    我在自己机器上试了下,没有报错,很正常啊