Shell como usar um comando para todo arquivo normal dentro e abaixo do Dir

0

Então, o que tenho que fazer é encontrar todos os arquivos regulares dentro e abaixo do diretório. Para cada um desses arquivos regulares, eu tenho que egrep para padrão ($ ARG) e descobrir se a saída do arquivo corresponde ao padrão ($ ARG), se isso acontecer, irá adicionar um ao contador.

O que eu tenho até agora é o comando file:

$count = 0
file *

No entanto, estou com problemas para obter o egrep & ARG > / dev / null /; echo $? para percorrer cada arquivo que aparece de (arquivo *).

Eu entendo esse arquivo * | diretório egrep > / dev / null; echo $? O resultado será 0, porque ele encontra o padrão 'diretório' no arquivo, mas estou tendo problemas para fazê-lo percorrer cada arquivo regular para que eu possa adicionar um ao contador toda vez que o padrão for correspondido.

    
por Jordan Skosnick 14.04.2016 / 02:57

1 resposta

0

Acho que isso vai fazer o que você quiser. Essencialmente, ele cria uma lista de todos os arquivos no diretório e abaixo; depois, digitaliza-os, imprimindo o nome de qualquer acerto; então conta quantos nomes de arquivos são retornados.

count=$(egrep -l "$ARG" $(find . -type f) | wc -l)

É possível que a localização retorne muitos arquivos (você receberá o erro "Argument list too long"). Nesse caso, esse mecanismo mais lento, mas mais seguro, funcionará:

count=$(find . -type f -exec egrep -l "$ARG" {} \; | wc -l)
    
por 14.04.2016 / 22:48

Tags