Exibindo arquivos esparsos no linux

0

Eu tenho vários arquivos esparsos em um servidor executando o red-hat. Eu quero olhar para os arquivos sem ter que ver os bytes zerados. Quando eu menos os arquivos, eu vejo um monte de '@ ^' onde os bytes zerados existem. Quando cato os arquivos, nenhum dos bytes zerados é exibido. No entanto, quando eu cat e pipe isso para menos, os bytes zerados são exibidos novamente.

Por que isso está acontecendo? Como faço para contornar isso para ver os arquivos usando menos e não ter os bits zerados exibidos?

    
por Snitse 11.03.2012 / 19:36

2 respostas

5

Tenho certeza de que os bytes zero também são exibidos quando você usa cat . Você simplesmente não os vê porque eles são ... zero bytes, e o seu terminal não exibe nada quando alimentado com zero bytes.

Por outro lado, se um arquivo é, de fato, armazenado esparsamente, está em detalhes de implementação do sistema de arquivos. Ferramentas como less e cat não sabem (na verdade, não podem saber) e não se importam se o arquivo é escasso. Se o arquivo contiver uma execução de zero bytes, então assim será. Ele poderia ter contido, em vez disso, um valor inteiro de bytes é 1, e seria tudo a mesma coisa para eles.

Se o que você deseja fazer é filtrar zero bytes e exibir todos os bytes restantes com less , basta usar um filtro para excluir esses bytes:

tr -d \000 < inputfile | less
    
por 11.03.2012 / 20:02
2

A razão pela qual o gato não está mostrando os bytes zerados é que ele não escapa de nada e o seu terminal não imprime zero bytes.

Você pode remover os zero bytes para ver menos assim:

cat $filename | tr -d "\0" | less

Substitua $ filename pelo nome do arquivo. Isso não irá modificar o arquivo (e pode demorar um pouco para arquivos binários grandes).

    
por 11.03.2012 / 20:02