使用grep -r时,您可以使用*或。搜索所有文件。似乎返回了相同的东西,但是真的一样吗?
假设我搜索“ foo”,那么我可以写
grep -r foo *
或者
grep -r foo .
有人会尝试解释两者之间的区别吗?和 *?
grep -r foo *
不会在隐藏文件或目录中查找匹配项,还会*
被shell扩展,因此当当前目录中有很多条目时,您可能会遇到参数列表过长的错误,或者如果一些文件或目录的名称以连字符开头。
调用grep -r foo .
没有以上缺陷
更新:
另一个区别:grep的手册页(@ fedora17)说:
-r, --recursive
Read all files under each directory, recursively, following symbolic links only if they
are on the command line. ...
在空目录中执行此命令时,也会有所不同:
$ grep -r foo *; echo $?
grep: *: No such file or directory
2
$ grep -r foo .; echo $?
1
$
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句