Eu tenho um script que grava em alguns arquivos, mas preciso deles de um tamanho específico. Então, eu estou querendo saber se há uma maneira de anexar um número específico de bytes nulos a um arquivo usando ferramentas de linha de comando padrão (por exemplo, copiando de /dev/zero
)?
26
oflag=append
para você?dd
comando.fallocate
ser outra opção para inserir furos em um arquivo. superuser.com/a/1172904/111432Respostas:
truncate
é muito mais rápido quedd
. Para aumentar o arquivo com 10 bytes, use:fonte
Você pode tentar isso também
Isso será lido em / dev / zero e acrescentado ao seu arquivo NUMBER bytes.
fonte
Abaixo está um exemplo de anexar 10 MB a um arquivo usando apenas dd.
fonte
meu primeiro palpite seria:
Basicamente, este comando diz ao dd para "ir" no final do arquivo e adicionar alguns bytes lidos anteriormente em / dev / zero.
Saudações,
fonte
ou
e para calcular o tamanho mais facilmente:
fonte
Se você estiver preenchendo seu arquivo com bytes nulos, meu palpite é que você está manipulando o arquivo em um
char *
em C. Se esse for o caso, talvez você não precise preencher o arquivo com bytes nulos, adicionando apenas um byte nulo no final do arquivo e preenchê-lo com bytes aleatórios pode ser suficiente. Nesse caso, o programa C abaixo seria muito eficiente (para ser usado apenas em arquivos menores que o 2º parâmetro, caso contrário, os dados seriam substituídos). Pode até fazer o que você deseja (preenchimento com bytes nulos), pois alseek
definição da função afirma que:Nesse caso, a 1ª chamada
lseek
ewrite
poderá ser removida. Mas os testes devem ser feitos no seu sistema primeiro ...fonte