[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"
songinlinux110 于 2011-08-26 09:36:12发表:
没错? find -name *.php 试试,除了index.php能找到,什么都找不到
find -name "*.php" 却可以都找到
dlshanghai 于 2011-07-22 13:35:59发表:
学习一下:0)1
ICEEN 于 2011-05-04 16:32:51发表:
真是………………
byaries 于 2010-10-30 21:27:23发表:
学习了
duo2752 于 2010-04-07 12:34:32发表:
find 和 正则都不是白给的
孔仔 于 2010-04-07 12:33:16发表:
:0w5ty(1
xlsogb 于 2010-04-07 08:18:38发表:
帮顶
alick 于 2010-04-06 22:43:28发表:
我在自己机器上试了下,没有报错,很正常啊