Chinaunix

标题: find查找文件名的正则表达式匹配的问题 [打印本页]

作者: junhengwoo    时间: 2016-03-15 10:02
标题: find查找文件名的正则表达式匹配的问题
我想查找当前目录以及子目录下以“.c”、“.h”和“.cpp”结尾的文件。

如下面的目录
  1. steven@linux:~/temp16$ tree
  2. .
  3. |-- a.h
  4. |-- bh
  5. |-- c.cpp
  6. |-- dcpp
  7. |-- e.c
  8. `-- fc
复制代码
我用find ./ -name "*.[c|h|cpp]" 的方式,结果以“.cpp”为后缀的文件没找到。
  1. steven@linux:~/temp16$ find ./ -name "*.[c|h|cpp]"
  2. ./a.h
  3. ./e.c
复制代码
请各位大神帮忙看看怎么解决这个问题
作者: 我是一隻羊    时间: 2016-03-15 10:05
这里用的是通配,不是正则.
  1. find / -regextype "posix-egrep" -regex
复制代码
这样才是正则,前面regextype定义正则表达式的类型.
作者: haooooaaa    时间: 2016-03-15 10:09
要不恶心点,,,
  1. find . -name "*.h" -o -name "*.cpp" -o -name "*.h"
复制代码

作者: junhengwoo    时间: 2016-03-15 10:12

我试着用正则表达式来实现,发现还是有问题。应该是我写的正则表达式有问题,麻烦再指导下
  1. steven@linux:~/temp16$ find . -regextype grep -regex ".*\.[c|h|cpp]"
  2. ./a.h
  3. ./e.c
复制代码
回复 2# 我是一隻羊


   
作者: junhengwoo    时间: 2016-03-15 10:15
这个可行,谢谢大神。
第一次知道了find还有个-o的参数可以用。

如果没有更好的方法,我就用这种了  


回复 3# haooooaaa


   
作者: haooooaaa    时间: 2016-03-15 10:17
回复 5# junhengwoo
  1. find -regex '.*\.\(h\|cpp\|h\)'
复制代码
find 正则还没用过,网上看的,测试可用,
作者: junhengwoo    时间: 2016-03-15 10:50
这个好使,谢谢哈
我就用这个了  

回复 6# haooooaaa


   
作者: bikong0411    时间: 2016-03-18 10:09
回复 2# 我是一隻羊


    这个不错




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2