bash如何使用grep命令在给定目录中的所有文件中搜索字符串

Erw*_*ith 11 bash shell

我的代码到现在为止。我是初学者。

count=0
for f in $ls do
count+= grep -c "classes" $f
done
echo $count
Run Code Online (Sandbox Code Playgroud)

nag*_*547 39

只需使用

grep -R <stringToSearch> <dirName>
Run Code Online (Sandbox Code Playgroud)

例如在当前目录和里面的所有文件中搜索“文本”

grep -R "text" .
Run Code Online (Sandbox Code Playgroud)

如果您想获得出现次数,请使用wc -l管道

grep -R "text" . | wc -l
Run Code Online (Sandbox Code Playgroud)

  • -R = 递归搜索子目录 (6认同)

小智 14

grep -rnw <Directory_path> -e "Pattern"
Run Code Online (Sandbox Code Playgroud)

例如,如果您想在该目录的所有文件中查找“helloWorld” ~/abc/xyz,则运行以下命令-

grep -rnw ~/abc/xyz -e "helloWorld"
Run Code Online (Sandbox Code Playgroud)

要在当前目录中搜索字符串“HelloWorld”,请使用以下命令-

grep -rnw . -e "helloWorld"
Run Code Online (Sandbox Code Playgroud)


tso*_*tso 0

count=0
for f in *
do
if [ -f "$f" ] #check if that file is regular file
then
    count=$(($count+$(grep -c "classes" "$f")))
fi
done
echo $count
Run Code Online (Sandbox Code Playgroud)