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
flagsを使用して複数の検索パターンを指定できます-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