Como posso verificar quais arquivos recuperados são válidos?

0

Eu tenho muitos arquivos recuperados, dos quais muitos são inválidos, embora pareçam estar bem por nome e extensão. Isso é esperado.

Agora eu preciso filtrar aqueles que provavelmente estão ok. Eu vejo a opções:

Por exemplo, os arquivos power point (* .pptx) são, na verdade, contêineres zip que começam com PK nos dois primeiros bytes. Então o comando

head --byte 2 filename

gera PK para a maioria dos arquivos bons, enquanto os arquivos ruins não iniciam com PK.

Pergunta 1: Como posso combinar head com find para listar os arquivos correspondentes?

Outra abordagem é o comando file . Imprime

Zip archive data, at least v2.0 to extract

para bons arquivos de ponto de poder, mas simplesmente

data

para arquivos inválidos.

Pergunta 2: Como posso combinar file com find para listar arquivos válidos?

Há também outro tipo de arquivo, mas eu posso aumentar o technque se eu só obtiver a dica:)

Pergunta 3: as formas mais óbvias de fazer isso?

    
por marlar 10.10.2011 / 11:38

3 respostas

0

Descobri o parâmetro -printf para find , o que torna muitas coisas muito mais fáceis do que usar -exec . Então, este comando irá identificar os arquivos (provavelmente) bons e movê-los para um subdiretório chamado good:

find . -type f -printf "file '%p' | grep 'Zip archive data' && mv '%p' good \n" | sh

Para documentos do Word e do Excel, você pode usar a string "Author:", pois arquivos de documentos válidos parecem ter esse atributo.

    
por 11.10.2011 / 10:34
1

Com o find você poderia fazer algo como

find . -type f -exec file "{}" + | awk  '/Zip archive data/ {print $1}' | sed 's/:$//'

que irá imprimir o nome do arquivo (removendo o trailing :) dos arquivos que o arquivo identifica como Zip archive data.

    
por 10.10.2011 / 22:12
0

Eu recomendaria o uso do grep, já que é para pesquisar texto em um arquivo.

Não tenho certeza dos detalhes de que você precisará, mas isso deve começar: link

    
por 10.10.2011 / 20:46