Pular para o conteúdo

grep: /bin/grep: cannot execute [Argument list too long]

Responder tópico
  • Denunciar
  • Indicar

1. grep: /bin/grep: cannot execute [Argument list too long]

Enviado em 23/06/2015 - 17:26h

Olá pessoal

Sou novato em Linux e preciso achar um numero de telefone dentro de um arquivo com extensão ttf . O comando até funciona quando tenho poucos arquivos . No entanto o diretório tem quase 500 mil arquivos e ai fica dando esse erro . alguem sabe como eu resolvo.

eu preciso achar o numero e retornar o nome do arquivo

grep -ri -l 11551228470500 *.TTF > teste.csv {}
-ksh: grep: /bin/grep: cannot execute [Argument list too long]

Responder tópico

2. Re: grep: /bin/grep: cannot execute [Argument list too long]

Enviado em 23/06/2015 - 17:50h

O shell antes de executar, resolve as expressões regulares, então como tem no teu comando *.TTF, antes dele rodar vai substituir isso por cada arquivo TTF, aí de repente podem existir uma quantidade muito grande de arquivos e estar estourando a capacidade de parâmetros que o grep suporta.

Três caminhos para resolver:

1) coloca um critério mais restritivo para diminuir o número de arquivos:
Ex:
grep .... file-2015-01*.TTF

2) cria um script para ler todos os arquivos do diretório e rodar o grep um por um

Vai ter algo mais ou menos assim no teu script:

for arquivo in `ls | grep TTF`
do
echo testando $arquivo
grep ..... $arquivo
done

3) Em algumas distribuições o grep pode ser escrito assim

# expressão entre aspas
grep .... 'file-2015-01*.TTF'

Neste caso o shell não fará a substituição dos parâmetros deixando para ser resolvido internamente pelo comando. Isso vc tem que ter cuidado pq nem todos os comandos suportam e qd suportam podem ter diferentes respostas de uma distribuição para outra.

espero ter te ajudado


---------------------
O perfeito é desumano porque o humano é imperfeito
(Fernando Pessoa)

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder