Сделать размер файла не менее 1 МБ

Я пытаюсь узнать об операционных системах, создав одну из них и протестировав ее в виртуальной коробке, но VBoxManage convertfromraw не позволяет моему исходному файлу быть очень маленьким (512B).

Существуют ли какие-либо команды bash, которые будут выполнять следующие действия (псевдокод), сохраняя при этом содержимое файла?

if (FILE.size < 1MB) {
    FILE.resize(1MB);
}

2 ответа

Решение

Предполагая Linux и современную файловую систему (безопасная - только растёт файлы):

fallocate --length=1M yourfile

Без Fallocate (создает редкий файл при росте; будьте осторожны с размером):

truncate --size=1M yourfile

Без Fallocate (требуется 64-битная система для файлов размером более 2 ГБ):

file="yourfile"
want=$(( 1 * 1024 * 1024 ))

size=$(stat -c %s "$file")
if (( want > size )); then
    head -c $(( want - size )) /dev/zero >> "$file"
fi

Из другой ветки:

dd if=/dev/zero bs=1 count=NUMBER >> yourfile

Это будет читать из /dev/zero и добавить к yourfileNUMBER байт.

Другие вопросы по тегам