如何在 BusyBox 1.4.2 上递归查找包含特定字符串的所有文件?

如何在 BusyBox 1.4.2 上递归查找包含特定字符串的所有文件?

如何在 BusyBox v1.4.2 上的目录和所有子目录中查找包含特定字符串的所有文件?我需要找到字符串“AA:CC:DD:00:EE:55”或“AACCDD00EE55”

BusyBox v1.4.2 (2012-06-01 11:17:34 CST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

Built-in commands:
-------------------
        . : [ [[ bg break cd chdir continue echo eval exec exit export
        false fg getopts hash help jobs kill local pwd read readonly
        return set shift source test times trap true type ulimit umask
        unset wait


# busybox --help
BusyBox v1.4.2 (2012-06-01 11:17:34 CST) multi-call binary

Usage: busybox [function] [arguments]...
   or: [function] [arguments]...

Currently defined functions:
        [, [[, adduser, ash, awk, cat, chmod, chroot, cp, cut,
        date, dd, deluser, dmesg, echo, false, free, getopt, grep,
        halt, hexdump, hostname, htxsnmptelnet, ifconfig, init,
        insmod, kill, killall, ln, login, ls, lsmod, mkdir, mknod,
        mount, mv, netstat, passwd, ping, ping6, poweroff, ps,
        pwd, reboot, renice, rm, rmmod, route, sh, sleep, tar,
        test, tftp, top, umount, wget

答案1

grep有一个递归标志-r,并允许使用标志指定多个搜索模式-e。另外,从格式来看,您似乎正在寻找 mac 地址,因此可能是大写或小写。

知道你可以做到

grep -ir -e "AA:CC:DD:00:EE:55" -e "AACCDD00EE55" /directory

sudo请注意,如果您没有文件/文件夹(例如文件夹)的读取权限,则必须指定/etc

例如,

xieerqi:$ grep -iR "string" /etc/cups                                                                              
grep: /etc/cups/subscriptions.conf: Permission denied
grep: /etc/cups/classes.conf: Permission denied
grep: /etc/cups/printers.conf.O: Permission denied
grep: /etc/cups/subscriptions.conf.O: Permission denied
grep: /etc/cups/ssl: Permission denied
grep: /etc/cups/printers.conf: Permission denied

发生这种情况是因为目录中所有项目的权限/etc/cups以及目录本身仅对 root 用户具有读写权限,对lp组具有读取权限。对于其他用户 - 没有读取权限。例如,

-rw-r----- 1 root lp     92 11月  6 09:15 subscriptions.conf

这就是为什么您需要 sudo 访问权限。

此外,grep可能会抱怨无法读取条目,因此您可能需要指定2> /dev/null重定向

例如,我收到以下错误,因为/etc/blkid.tab它是符号链接,而不是实际文件。

xieerqi:$ sudo grep -iR "b4:82:fe:d3:85:56" /etc                                                                  
[sudo] password for xieerqi: 
grep: /etc/blkid.tab: No such file or directory

为了使错误从输出中消失,我会这样做sudo grep -iR "b4:82:fe:d3:85:56" 2> /dev/null,它将错误流重定向到/dev/null设备,基本上是任何输出的黑洞

相关内容