O programa grep lê uma linha de cada vez na memória. Uma linha é definida como tudo depois de um caractere de nova linha e até o próximo. Com dados binários, pode haver um espaço muito grande sem nenhuma nova linha.
Você pode tentar usar grep -z
. Isso informa ao grep para tratar os bytes nulos como o separador de registro de entrada em vez de novas linhas. Pedaços extremamente grandes de dados binários são menos propensos a conter nenhum byte nulo do que sem nova linha. Na prática, o maior número possível de dados sem nova linha é uma longa seqüência de bytes nulos em uma área do disco que nunca foi gravada. Grandes quantidades de dados de texto que não contêm bytes nulos provavelmente não serão tão grandes a ponto de esgotar a memória. Outro benefício de grep -z
é que a saída conterá blocos inteiros (tipicamente 1–4kB) de texto, não apenas uma linha.
Em vez de grep, você pode tentar um utilitário dedicado, como PhotoRec (parte de TestDisk ). Apesar do nome, não se limita a fotos. Esses utilitários conhecem a estrutura do sistema de arquivos, portanto, eles podem recuperar um arquivo excluído que abrange vários blocos não consecutivos.
É claro que nunca há garantia de que você poderá recuperar dados antigos. Pode ter sido substituído.