linux下grep命令的问题

来源:百度知道 编辑:UC知道 时间:2024/06/26 04:55:18
当前目录下有两个带*号的文件,一个*.conf和一个1*.conf。

find ./ -maxdepth 1 | grep "*"和

find ./ -maxdepth 1 | grep *

的执行结果不同,这是为什么呢?

第一条命令的结果是.

./1*.conf
./*.conf

但第二条命令的结果是一些莫名其妙的信息
像什么“binary files *** matches”什么的。

这是为什么阿?grep "*"不是匹配所有名字么?

*在这里是正则表达式,没有匹配所有名字的意思。
那是是在文件系统中用的

"*" 表示匹配带*这个字符的行
* 表示 找出带有*的文件 并打印行

find ./ -maxdepth 1 | grep "*"
find ./ -maxdepth 1 | grep \*

这两个命令才是等价的 对于 grep来讲 他只接受正则表达式匹配 * ? 这些字符需要加转义符 \

给你个例子
#################################
milo@APO~$ ls | grep \*
CPing*
hello*
milo@APO~$ ls | grep *
ddtest:CPing*
milo@APO~$ cat ddtest
CPing*
ddtest.tar
drivers/
new.text
test
test.py
test.tar
testfile
testgrep/
test~
milo@APO~$ ls | grep "*"
CPing*
hello*
milo@APO~$
########################################