Remove arquivos contendo certos caracteres

0

Eu tenho uma lista de arquivos em um diretório e eu preciso remover todos os arquivos que contenham um 0 ou um 7. Eu sinto que preciso usar o grep, mas não tenho muita certeza. Alguma idéia?

    
por Gmans 14.10.2016 / 03:30

2 respostas

1

O que você quer fazer é avaliar seus arquivos de acordo com um teste condicional específico e executar uma ação em cada arquivo de acordo com o resultado do teste condicional. Este é o objetivo exato do comando find .

Aqui está um comando portátil ( POSIX-compliant ) para remover arquivos comuns que têm um conteúdo, incluindo um "0" ou um "7":

find . -type f -exec grep -q '[07]' {} \; -exec rm {} +

Note que este recursivamente pesquisa o diretório atual.

Se não é isso que você quer, você pode verificar se o -maxdepth primary está disponível (nesse caso você também pode usar o -delete primário; nem é especificado pelo POSIX):

find . -maxdepth 1 -type f -exec grep -q '[07]' {} \; -delete

Ou você pode aplicar as técnicas fornecidas em:

por 14.10.2016 / 04:26
0
grep -l '[07]' DirToYourFiles/* | xargs rm -f

grep -l significa somente nomes de arquivos de lista

[07] significa 0 ou 7

xargs torna-os um comando.

Isso pressupõe que os nomes de arquivos não contenham espaços em branco, nova linha, aspas simples, aspas duplas ou caracteres de barra invertida. Com os utilitários GNU, você pode torná-lo mais confiável com:

grep -lZ '[07]' DirToYourFiles/* | xargs -r0 rm -f
    
por 14.10.2016 / 03:38

Tags