求find命令的一个用法

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
bearscafe
帖子: 694
注册时间: 2007-05-05 23:11

求find命令的一个用法

#1

帖子 bearscafe » 2010-09-16 11:04

怎样查找当前目录下所有以c,h,cpp,cc,hpp结尾的文件?

如果用:

代码: 全选

find . -name "*.[ch]"
只能查找c,h结尾的,对cpp、cc和hpp就没办法了。
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 求find命令的一个用法

#2

帖子 tusooa » 2010-09-16 16:44

find . -name '*.[ch]' -or -name '*.cc' -or -name '*.hh' -or -name '*.[ch]pp'

代码: 全选

] ls -ld //
头像
HuaChong
帖子: 493
注册时间: 2006-09-12 17:10

Re: 求find命令的一个用法

#3

帖子 HuaChong » 2010-09-17 11:13

tusooa 写了:find . -name '*.[ch]' -or -name '*.cc' -or -name '*.hh' -or -name '*.[ch]pp'
正解,关键是直到有个-or选项
头像
bearscafe
帖子: 694
注册时间: 2007-05-05 23:11

Re: 求find命令的一个用法

#4

帖子 bearscafe » 2010-09-23 12:32

tusooa 写了:find . -name '*.[ch]' -or -name '*.cc' -or -name '*.hh' -or -name '*.[ch]pp'
:em11
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 求find命令的一个用法

#5

帖子 astolia » 2010-09-23 23:54

find是支持正则查找的

代码: 全选

find -regextype posix-egrep  -regex '.*\.c|.*\.h|.*\.cpp|.*\.cc|.*\.hpp'
或者默认的emacs正则

代码: 全选

find  -regex '.*\.c\|.*\.h\|.*\.cpp\|.*\.cc\|.*\.hpp'
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 求find命令的一个用法

#6

帖子 eexpress » 2010-09-24 9:26

折腾个球。执行4次就是。这后缀,不具备必然的规律的。
for i in c cpp cc h hpp; do find xxxxxxx
● 鸣学
jiaanqing
帖子: 3
注册时间: 2008-10-16 11:20

Re: 求find命令的一个用法

#7

帖子 jiaanqing » 2010-09-30 15:37

哈哈,楼上的方法很直观。
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 求find命令的一个用法

#8

帖子 tusooa » 2010-09-30 21:39

7楼的,用了5次find。

代码: 全选

] ls -ld //
回复