在 BusyBox 1.0 中递归搜索文件中的字符串?

在 BusyBox 1.0 中递归搜索文件中的字符串?

可能的重复:
如何在 BusyBox 1.0 上递归地 grep 文本?

find如果和grep不可用,如何在 BusyBox 1.0 中递归搜索文件中的字符串?

(我想远程登录到路由器并找出iptables规则的存储位置。)

BusyBox v1.00 (2011.01.13-12:30+0000) 内置shell (msh)
输入“help”以获取内置命令列表。

# 帮助

内置命令:
-------------------
        。 :break cd continue eval exec exit exit 帮助登录 newgrp
        读取只读设置班次时间陷阱 umask 等待 [ busybox cat chmod
        cp date dmesg echo expr false ftpget ftpput 主机名 ifconfig
        init insmod Kill Killall klogd linuxrc ln logger logread ls mkdir
        mknod mount msh mv ping ps pwd 重新启动 renice rm rmmod 路由 sed
        sendarp sh sysinfo syslogd 测试 tftp 顶部跟踪路由 true tty
        卸载 vconfig wget

答案1

我滚动了这个脚本,它从当前目录进行递归模式搜索。它使用 busyboxshsed.使用busybox 1.17.1测试;您的里程可能会有所不同 1.00。

#!/bin/busybox sh

sed="busybox sed"

search_in()
{
    searchterm="$1"
    searchdir="$2"
    prefix="$3"

    (
        cd "$searchdir"
        for file in *
        do
            if [ -d "$file" ]
            then
                # recurse into subdirectory
                search_in "$searchterm" "$file" "$prefix\\/$file"
            else
                # use sed like grep
                $sed -rn '/'"$searchterm"'/s/(.*)/'"$prefix\\/$file"': \1/gp' "$file"
            fi
        done

    )
}

# search for command-line search term, starting in current directory (`.`)
search_in "$1" . "."

相关内容