Tentando excluir um diretório específico de um comando grep

0

Eu tenho um diretório que contém centenas de subdiretórios que têm datas como nomes, e dentro de cada um desses subdiretórios, há um monte de arquivos que eu preciso pesquisar. O comando grep que estou usando agora é o seguinte:

grep -ER --exclude-dir=2017060200_it2 "PATTERN" *_it2/file00*.pjson

e a estrutura de pastas é assim:

parcel/
    |--- 2015010100_it2/
        |--- file001.pjson
        |--- file002.pjson
        ...
        |--- file005.pjson
    |--- 2015010200_it2/
        |--- file001.pjson
        ...
    ...
    |--- 2017060200_it2/
        |--- file001.pjson
        |--- file002.pjson
        ...

Eu quero que meu comando grep esteja pesquisando em file00*.pjson para cada subdiretório, EXCETO o mais recente, neste caso sendo 2017060200_it2 . No entanto, meu --exclude-dir=2017060200 não parece estar conseguindo isso.

Estou usando o grep V2.20 em um sistema CentOS 6.7 e, quando uso grep --help , tenho a opção de usar --exclude-dir , portanto, não acho que essa informação seja relevante.

Bônus: Se você pudesse me mostrar como obter a data atual e formatá-la como yyyyMMdd00_it2 para que eu pudesse fazer disso um cron job, isso seria incrível, mas eu estava planejando descobrir como fazer isso separadamente uma vez eu comecei a trabalhar.

    
por phdumaresq 02.06.2017 / 16:10

1 resposta

0

Seu --exclude-dir está correto, é apenas que ele afeta a recursão - mas você especificou explicitamente todos os diretórios *_it2 no arquivo glob, e isso vem antes de qualquer recursão.

Sugiro usar find - algo como (não testado)

find . -name 2017060200_it2 -prune -name 'file00*.pjson' -execdir grep -E "PATTERN" {} \;

Bônus: date '+%Y%m%d00_it2'

    
por 02.06.2017 / 16:23