如果我进入/etc/apache2/
并键入,grep -rl 'LoadModule php' ./*
那么我只会看到./mods-available/php7.0.load
。如果我更改r
为,R
我会看到
./mods-available/php7.0.load
./mods-enabled/php7.0.load
这两个都是纯目录。我希望-r
导致grep递归PWD中的所有文件/目录。这是怎么回事-r
?我认为-R
在这一点上始终要使用。
根据grep的联机帮助页:
-r,-recursive
仅在命令行上,跟随符号链接以递归方式读取每个目录下的所有文件。请注意,如果未提供文件操作数,则grep将搜索工作目录。这等效于-d recurse选项。-R,--dereference-recursive递归
读取每个目录下的所有文件。跟随所有符号链接,与-r不同。
例子:
我有一个文件夹测试,其中有一个文件1.txt。2.txt是指向1.txt的符号链接,其输出ls -l test
如下所示:
-rw-r--r-- 1 kulfy kulfy 15 Jun 12 21:53 1.txt
lrwxrwxrwx 1 kulfy kulfy 5 Jun 12 21:53 2.txt -> 1.txt
1.txt的内容是:
This is a file.
如果要在测试文件夹中的文件中搜索“文件”字符串,请运行:
grep "file" test
我会遇到一个错误:
grep: test: Is a directory
但是,如果我这样做:
grep -R "file" test
我得到一个输出:
test/2.txt:This is a file
test/1.txt:This is a file
另一方面,如果我运行:
grep -r "file" test
我得到输出:
test/1.txt:This is a file
在这里,我没有明确提到要扫描所有文件。因此,当我使用R
标志时,符号链接(此处为2.txt)受到尊重并生成了输出。但是当我使用r
标志时,符号链接被忽略了,仅仅是因为我也没有提到扫描2.txt。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句