如何在 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
设备,基本上是任何输出的黑洞