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


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 que esses arquivos sejam eliminados .)


1


origem


para esclarecimento, 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 que esses arquivos sejam eliminados. - Eric Leung
você sabe sobre bash? tente usar o bash - raindrop
Qual sistema operacional? - evilsoup
whoops; isso é para o vista. Eu não estou familiarizado com bash mas ansioso para aprender. Vou testar o script com um linux live hoje mais tarde, obrigado! - Eric Leung


Respostas:


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

Você não especificou um sistema operacional, mas vou assumir Linux de qualquer forma.

Salvar script para /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

Recursiva one-liner:

cd /path/to/files
find -type f -exec /root/removebadfiles.sh {} \;

1