当前位置: 技术问答>linux和unix
grep使用*问题
来源: 互联网 发布时间:2016-06-05
本文导语: 我想找出当前目录下所有以a开头的文件,我用命令:ls|grep 'a*' 结果如下: a.sed a.sh b.sh b.txt c++ cd1 colorls.sh command shell typescript 结果中有为什么会出现其它的文件呢?我想请问grep中*的用法是怎么样的呢? ...
我想找出当前目录下所有以a开头的文件,我用命令:ls|grep 'a*'
结果如下:
a.sed
a.sh
b.sh
b.txt
c++
cd1
colorls.sh
command
shell
typescript
结果中有为什么会出现其它的文件呢?我想请问grep中*的用法是怎么样的呢?
结果如下:
a.sed
a.sh
b.sh
b.txt
c++
cd1
colorls.sh
command
shell
typescript
结果中有为什么会出现其它的文件呢?我想请问grep中*的用法是怎么样的呢?
|
我试验了下,如果要用楼主的办法获取 以a开头的是这样的
ls | grep '^a'
如果要找出文件名包含a的,则是这样的
ls | grep '.a'
照你的写法, 'a*' 是表式重复a 0次或多次, 所以别的非a开头的也出来的,因为他们重复匹配了0次
ls | grep '^a'
如果要找出文件名包含a的,则是这样的
ls | grep '.a'
照你的写法, 'a*' 是表式重复a 0次或多次, 所以别的非a开头的也出来的,因为他们重复匹配了0次
|
ls | grep '^a'
|
ls |grep ^a
就可以了
就可以了
|
ls -la |grep a
就行了,
就行了,
|
如果你不打算用正则表达式,最好用ls a*而不用grep。用正则表达式,^表示开头。
|
你这样就不会了:
[root@RHEL4_U5 test]# ls |grep 'a*.sed'
grep中*的代表的意思是:
表示任意个任意字符
你用下面的命令就好了
[root@RHEL4_U5 test]# ls |grep ^a
a.sed
a.sh