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

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

Cristiano Miranda
CristianoMiranda

(usa Outra)

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]



  


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

Luis Henrique Pessoa
gwarah

(usa Ubuntu)

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)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts