作者:Miany_201314 | 来源:互联网 | 2017-07-05 12:41
[i=s] 本帖最后由 blackgenius 于 2010-4-7 10:31 编辑
在shell命令中常常用到find查找文件,有时候突然有好多个不同类型的文件需要一起查询,这时候会用到通配符和正则表达式,但是常常遇到以外或者得到意向不到的结果,向各位请教一下几个情况,为什么会出现?
find . -name *c #或者
find . -name *.c #或者
find . -name *.txt #这个就报错了~shell把find命令的语法规则列了一遍 ??rz
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结尾的文件和目录 ??rz
请教高手指点迷津,如果要一条命令里面同时查询.txt .c .sh .sql结尾的命令,如何实现?先谢过!
终于知道了,还是正则表达式用法不熟悉,正解应该是:
find . -regex ".*\.\(txt\|sh\)"
find . -name "*.sh" -o -name "*.txt"