Grep não está honrando --exclude-dir

10

Estou com problemas para pesquisar em /var devido a uma falha em /var/run . Eu tentei excluir /var/run , mas não está produzindo os resultados esperados:

$ sudo grep -IR --exclude-dir="/var/run" '45.78.157.165' /var | egrep -v '(audit|access)'
/var/log/secure:Jun 21 14:08:34 cryptopp sshd[19729]: error: Received disconnect from 199.91.135.157: 3: com.jcraft.jsch.JSchException: reject HostKey: 45.78.157.165 [preauth]
/var/log/secure-20160626:Jun 21 14:08:34 cryptopp sshd[19729]: error: Received disconnect from 199.91.135.157: 3: com.jcraft.jsch.JSchException: reject HostKey: 45.78.157.165 [preauth]
/var/log/secure-20160626:Jun 21 14:08:34 cryptopp sshd[19729]: error: Received disconnect from 199.91.135.157: 3: com.jcraft.jsch.JSchException: reject HostKey: 45.78.157.165 [preauth]
grep: /var/run/saslauthd/mux: No such device or address
grep: /var/run/dbus/system_bus_socket: No such device or address
grep: /var/run/rpcbind.sock: No such device or address
grep: /var/run/udev/control: No such device or address

Eu tentei os dois -exclude-dir=/var/run e -exclude-dir="/var/run" . Ambos produzem os mesmos resultados.

Por que meu grep está falhando?

Como eu excluo /var/run de um grep recursivo?

CentOS 7.2, com o Grep:

$ grep --version
grep (GNU grep) 2.20
Copyright (C) 2014 Free Software Foundation, Inc.
    
por jww 02.07.2016 / 20:50

1 resposta

16

Acho que provavelmente é porque você está pedindo explicitamente que grep pesquise recursivamente de /var e /var/run não corresponda a um SUBDIRETÓRIO em /var .

Veja a página man do grep, que diz:

--exclude-dir=glob
    [..] skip any subdirectory whose base name matches glob.  [..]

FIX

Portanto, para corrigir seu comando, altere o padrão de exclusão, por exemplo:

sudo grep -IR --exclude-dir="run" '45.78.157.165' /var | egrep -v '(audit|access)'
    
por 02.07.2016 / 21:24

Tags