什么';grep-r和-r的区别是什么
在手册页中: -r 按照符号顺序递归读取每个目录下的所有文件 仅当链接位于命令行上时才链接 “在命令行上”到底意味着什么什么';grep-r和-r的区别是什么,grep,Grep,在手册页中: -r 按照符号顺序递归读取每个目录下的所有文件 仅当链接位于命令行上时才链接 “在命令行上”到底意味着什么 谢谢。如果您也检查了man grep: $ grep -r Ping /test/dir/* #does NOT follow the symlink to ../a a:Ping info $ grep -R Ping /test/dir/* #DOES follow the symlink to ../a a:Ping info dir/b:Ping i
谢谢。如果您也检查了
man grep
:
$ grep -r Ping /test/dir/* #does NOT follow the symlink to ../a
a:Ping info
$ grep -R Ping /test/dir/* #DOES follow the symlink to ../a
a:Ping info
dir/b:Ping info
-r,--recursive
按照符号顺序递归读取每个目录下的所有文件
仅当链接位于命令行上时才链接。这相当于
-d递归选项
-R,--dereference recursive
递归读取每个目录下的所有文件全部跟随
符号链接,与-r不同。
请参见一个示例:
我们在/test
中创建一个包含以下内容的文件
$ cat /test/a
Ping info
Hello
然后我创建了一个符号链接:
$ ln -s /test/a /test/dir/b
所以它看起来像:
$ ls -l /test/dir
b -> ../a
现在我们grep
:
$ grep -r Ping /test/dir/* #does NOT follow the symlink to ../a
a:Ping info
$ grep -R Ping /test/dir/* #DOES follow the symlink to ../a
a:Ping info
dir/b:Ping info
“在命令行上”是指传递给grep的参数。如果你给一个符号链接作为grep-r
的参数,它将跟随它。但是,如果grep-r
在遍历目录时遇到符号链接,它就不会跟随它(与grep-r
相反)
假设您有一个目录,其中包含一组文件,其中一个包含指向的符号链接。
(父目录):
那么
将仅对该目录中的文件进行grepgrep-r foobar.
将grep父目录(grep-r foobar foo
)中的文件(在作为参数给出的符号链接之后)。
还将grep父目录中的文件(符号链接后面不是作为参数给出的,而是在遍历当前目录时找到的)grep-R foobar.