Use isto:
grep -rn "$\('\|\"\)" /path/to/directory
Seu problema é na verdade duplo:
-
Da perspectiva de
grep
, Você está usando as sintaxes Regex estendidas, ou seja,(
,|
,)
sem escapar delas (para tratá-las como especiais) dentro do padrão Básico de Regex. Para superar isso, escape a todos para tratá-los como especiais ou use a opção-E
degrep
. -
Outro problema causado pelo problema não escapando é que
$()
é o padrão de substituição do comandobash
, pois você não escapou dos caracteres relevantesbash
estava tratando o padrão$()
como substituição de comando . Observe que o\$()
torna o comando\
plus substituição de comando como primeiro\
fará o segundo\
literal e o restante padrão de substituição de comando será deixado como está.
Observe também que -i
é desnecessário aqui, pois não estamos pesquisando caracteres alfabéticos. Você pode estar interessado em imprimir os nomes dos arquivos:
grep -Hrn "$\('\|\"\)" /path/to/directory
Outra coisa é que você pode escapar sem $
(indica o fim da linha) nesse caso, porque existem caracteres para corresponder depois de $
, como resultado grep
irá tratar literalmente:
grep -Hrn "$\('\|\"\)" /path/to/directory