Deletar arquivos que não contenham determinado texto em seu conteudo [RESOLVIDO]

1. Deletar arquivos que não contenham determinado texto em seu conteudo [RESOLVIDO]

Mirian
menphisbr

(usa Red Hat)

Enviado em 18/06/2019 - 13:03h

Boa tarde,

Gostaria de uma ajuda para a seguinte situação:
Preciso buscar e deletar de um determinado diretório (fixo) todos os arquivos que não contenham determinada palavra
São arquivosx XML.

Com o comando abaixo eu consigo localizar os arquivos que contem
find ./* -type f -exec grep -l 09061420000 {} \;

Mas queria deletar todos os outros que não contenham esse texto 09061420000.
Alguem pode ajudar?
Obrigada



  


2. Re: Deletar arquivos que não contenham determinado texto em seu conteudo

Vinicius Mello
vmmello

(usa Slackware)

Enviado em 18/06/2019 - 14:50h

Olá,

Uma forma de fazer é com a seguinte linha de comando (mantém os arquivos que contem a expressão, e remove os que não contém):

find . -type f -iname \*.xml -print | while read arquivo; do grep -q 09061420000 "$arquivo" && continue || rm -f "$arquivo" ; done 


Você pode testar primeiro sem remover adicionando a palavra "echo" antes do "rm" na linha acima, assim ele vai mostrar quais arquivos ele removeria.


3. Re: Deletar arquivos que não contenham determinado texto em seu conteudo

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/06/2019 - 15:14h

menphisbr escreveu:

Boa tarde,

Gostaria de uma ajuda para a seguinte situação:
Preciso buscar e deletar de um determinado diretório (fixo) todos os arquivos que não contenham determinada palavra
São arquivosx XML.

Com o comando abaixo eu consigo localizar os arquivos que contem
find ./* -type f -exec grep -l 09061420000 {} \;

Mas queria deletar todos os outros que não contenham esse texto 09061420000.
Alguem pode ajudar?
Obrigada


# grep -vrl 09061420000 | xargs rm 


* EDITADO
man grep
-v, --invert-match
Invert the sense of matching, to select non-matching lines.

Simulei aqui..... Não deu bom não!

O -v inverte o sentido de correspondência para selecionar linhas não correspondentes.

Desculpe!

NÃO EXECUTE O COMANDO ACIMA COM RM!


4. Re: Deletar arquivos que não contenham determinado texto em seu conteudo

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/06/2019 - 15:39h

Nota: Teste com ls antes da remoção.

# grep -vrl 09061420000 | xargs ls -l

Ou sem o xargs:

# grep -vrl 09061420000



5. Re: Deletar arquivos que não contenham determinado texto em seu conteudo

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/06/2019 - 15:46h

Simulei aqui..... Não deu bom não!

O -v inverte o sentido de correspondência para selecionar linhas não correspondentes.

Desculpe!

NÃO EXECUTE O COMANDO ACIMA COM RM!



6. Re: Deletar arquivos que não contenham determinado texto em seu conteudo

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/06/2019 - 16:00h

Agora sim!

# man grep
 -L, --files-without-match
Suppress normal output; instead print the name of each input file from which no output would normally have been printed. The scanning will stop on the first match


* Testando:
# grep -rL 09061420000 

* Removendo:
# grep -rL 09061420000 | xargs rm 




7. Re: Deletar arquivos que não contenham determinado texto em seu conteudo [RESOLVIDO]

Mirian
menphisbr

(usa Red Hat)

Enviado em 18/06/2019 - 16:14h

Valew, funcionou perfeitamente






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts