您可以使用该grep
命令而不指定目录路径吗?
例子:
$ sudo grep "filename" /
我也尝试过这个:
sudo find / -type f grep -l "filename"
还是没有运气。
基本上我正在搜索LoadModule
Apache2 配置文件中指定的位置。我以为它在这里:/etc/apache2/apache2.conf
但事实并非如此。
答案1
Grep 希望您给它一个文件名或文件名列表。它不采用路径作为参数。因此,你的第一次尝试可以写成
sudo grep searchstring /*
搜索紧邻根目录下的所有文件。 (这可能不是您想要的。)
编辑:GNU grep 实际上可以递归搜索,所以你可以这样做
sudo grep -r searchstring /
在第二种情况下,您误解了 find 的工作原理。-type
需要一个参数告诉它要查找什么类型的文件,并且之后仅添加“grep”不会执行任何操作。但是,您可以告诉它对找到的每个文件执行命令,这可能就是您正在寻找的内容。就像这样:
sudo find / -type f -exec grep -l searchstring {} \;
意思{}
是“文件的名称”,并且\;
意思是“命令现在完成”。
答案2
珍妮的回答是最笼统的。您应该能够找到您需要的东西
grep -r -i '^[[:space:]]*LoadModule' /etc/apache2
为了迂腐,您还应该 grep 查找并记下 apache2 目录结构之外的任何“include”指令。
为此,您可以尝试获取打开的文件列表apache2ctl -t
以检查配置,如下所示:
APACHE_HTTPD='ltrace -s4096 -e open@libapr* apache2' apache2ctl -t 2>&1 |
cut -d\" -sf2 |
grep -v /dev/ |
sort -u |
xargs -rd '\n' grep -i '^[[:space:]]*LoadModule'