Como encontrar todos os arquivos contendo uma string específica recursivamente em um BusyBox 1.4.2?

1

Como encontrar todos os arquivos contendo uma string específica dentro do diretório e todos os subdiretórios em um BusyBox v1.4.2? Preciso encontrar a string "AA: CC: DD: 00: EE: 55" ou "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
    
por minto 14.11.2015 / 22:05

1 resposta

2

grep tem um sinalizador recursivo -r e permite especificar vários padrões de pesquisa com -e sinalizador. Além disso, no formato que você parece estar procurando por um endereço mac, isso pode ser maiúsculas ou minúsculas.

Sabendo que você poderia fazer

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

Observe que você precisa especificar sudo caso não tenha permissões de leitura para arquivos / pastas, como /etc folder.

Por exemplo,

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

Isso acontece porque as permissões de todos os itens em /etc/cups e o próprio diretório têm permissões de leitura / gravação somente para usuário raiz e permissões de leitura para lp group. Para outros usuários - sem permissões de leitura. Por exemplo,

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

É por isso que você precisa de acesso ao sudo.

Além disso, grep pode reclamar por não conseguir ler uma entrada, portanto, talvez seja necessário especificar 2> /dev/null redirecionamento

Por exemplo, recebo o seguinte erro porque /etc/blkid.tab é um link simbólico, não um arquivo real.

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

Para fazer com que o erro desapareça da saída, eu faço sudo grep -iR "b4:82:fe:d3:85:56" 2> /dev/null , que redireciona o fluxo de erro para /dev/null device, basicamente black-hole para qualquer saída

    
por 14.11.2015 / 22:17