Você pode usar o dd:
dd if=/dev/zero of=output.dat bs=24M count=1
ou
dd if=/dev/zero of=output.dat bs=1M count=24
Gostaria de gerar um arquivo com o nome example.file
. Eu poderia usar
touch example.file
mas eu quero que o arquivo tenha exatamente 24MB de tamanho. Eu já verifiquei a manpage do toque, mas não há nenhum parâmetro como este. Existe uma maneira fácil de gerar arquivos de um certo tamanho?
No Linux ou Cygwin não embutido (ou qualquer sistema com GNU coreutils) e FreeBSD:
truncate -s 24m example.file
Isso cria um arquivo cheio de bytes nulos. Se o arquivo já existir e for menor, ele será estendido para o tamanho solicitado com bytes nulos. Se o arquivo já existir e for maior, ele será truncado para o tamanho solicitado.
Os bytes nulos não consomem nenhum espaço em disco, o arquivo é um arquivo esparso .
Em muitos sistemas, head -c 24m </dev/zero >example.file
cria um arquivo não esparso cheio de bytes nulos. Se head
não tiver uma opção -c
em seu sistema (é comum mas não em POSIX), você pode usar dd bs=1024k count=24 </dev/zero >example.file
(isso é compatível com POSIX).
Se você não se importa com o conteúdo do arquivo, isso é muito mais rápido do que usar dd
:
fallocate -l 24M filename
Obviamente, usar dd
para um arquivo de 24MB não levará nenhum tempo em um sistema moderno, mas arquivos maiores podem ficar consideravelmente lentos.
Você pode usar o dd:
dd if=/dev/zero of=outputfile.out bs=1024k count=24
Ou caso você esteja usando o Solaris
mkfile 24m outputfile.out
FROM_NODE=N01;
echo; cd $MOUNT_PATH; pwd; ls -la; sleep 1; echo;
WHEN="$(date +%Y-%m-%d_%H-%M-%S)";
fallocate -l 10M $MOUNT_PATH/"$FROM_NODE"_"$WHEN".dump
ls -lha; echo;
Tags command-line bash files