Eu tenho uma imagem de disco de 30 GB de uma partição borked (acho dd if=/dev/sda1 of=diskimage
) da qual preciso recuperar alguns arquivos de texto. As ferramentas de gravação de dados foremost
só funcionam em arquivos com cabeçalhos bem definidos, ou seja, não em arquivos de texto sem formatação, então voltei ao meu bom amigo strings
.
strings diskimage > diskstrings.txt
produzi um arquivo de texto de 3GB contendo um monte de strings, principalmente coisas inúteis, misturadas com o texto que eu realmente quero.
A maior parte da crosta tende a ser realmente longas e sem interrupções. O material em que estou interessado tem menos de 16kb, portanto, filtrarei o arquivo pelo comprimento da linha. Aqui está o script Python que estou usando para fazer isso:
infile = open ("infile.txt" ,"r");
outfile = open ("outfile.txt","w");
for line in infile:
if len(line) < 16384:
outfile.write(line)
infile.close()
outfile.close()
Isso funciona, mas para referência futura: Há alguma encantamentos mágica de uma linha (pense awk
, sed
) que filtrar um arquivo por comprimento de linha?