Como posso excluir todos os arquivos em massa em um diretório que contenha apenas uma linha?

1

Eu usei um programa de recuperação de dados para recuperar um monte de texto sobrescrito e as coisas que eu quero (versões anteriores dos arquivos sobrescritos) estão escondidos entre milhares de .txt , .json , .h e .html arquivos.

A maioria desses arquivos indesejados contém apenas uma linha de texto truncado (mesmo que tenham megabytes de tamanho), portanto, seria útil ter uma ferramenta que possa reconhecer rapidamente esses arquivos e eliminá-los.

(para o fundo: alguns dos textos que eu quero foram encontrados dentro desses arquivos recuperados, às vezes em meio a linhas truncadas de código ou lixo completo. Nenhum arquivo contendo apenas uma linha contém o texto que eu quero, portanto eu quero esses arquivos para ser eliminado.)

    
por Eric Leung 18.08.2013 / 11:49

1 resposta

1

Você usou photorec para a recuperação, não é?

Você não especificou um sistema operacional, mas vou assumir o Linux mesmo assim.

Salve o script em /root/removebadfiles.sh (e chmod +x /root/removebadfiles.sh ):

#!/bin/bash
file="$@"
lines=$(wc -l "$file" 2>/dev/null | awk '{print $1}');
if [ "$lines" = "1" ]; then 
  echo "$file"; 
  rm "$file"; 
fi

One-liner recursivo:

cd /path/to/files
find -type f -exec /root/removebadfiles.sh {} \;
    
por 18.08.2013 / 12:29