如何递归地grep所有目录和子目录?

find . | xargs grep "texthere" *

当前回答

要查找路径递归包含特定字符串的文件名,请使用以下命令对于UNIX:

find . | xargs grep "searched-string"

对于Linux:

grep -r "searched-string" .

在UNIX服务器上查找文件

find . -type f -name file_name

在LINUX服务器上查找文件

find . -name file_name

其他回答

下面是在Unix和Linux环境中递归搜索字符串的命令。

对于UNIX命令是:

find . -name "string to be searched" -exec grep "text" "{}" \;

对于Linux,命令是:

grep -r "string to be searched" .

另一种语法递归地grep Linux系统上所有文件中的字符串

grep-irn“字符串”

-r表示递归搜索,在给定目录和子目录中搜索指定字符串,在文件、程序等中查找指定字符串

-不区分大小写可用于添加大小写颠倒的字符串

-n打印指定字符串的行号

注意:这会将大量结果打印到控制台,所以您可能需要通过管道过滤输出,并删除不太有趣的信息,它还会搜索二进制程序,因此您可能需要过滤一些结果

要查找路径递归包含特定字符串的文件名,请使用以下命令对于UNIX:

find . | xargs grep "searched-string"

对于Linux:

grep -r "searched-string" .

在UNIX服务器上查找文件

find . -type f -name file_name

在LINUX服务器上查找文件

find . -name file_name

这应该是有效的:

grep -R "texthere" *

这里有一个递归(使用bash和sh进行了少量测试)函数,它遍历给定文件夹($1)的所有子文件夹,并使用grep搜索给定文件($2)中的给定字符串($3):

$ cat script.sh
#!/bin/sh

cd "$1"

loop () {
    for i in *
    do
        if [ -d "$i" ]
        then
            # echo entering "$i"
            cd "$i"
            loop "$1" "$2"
        fi
    done

    if [ -f "$1" ]
    then
        grep -l "$2" "$PWD/$1"
    fi

    cd ..
}

loop "$2" "$3"

运行它和示例输出:

$ sh script start_folder filename search_string
/home/james/start_folder/dir2/filename