如何在Linux中创建具有给定大小的文件?

时间:2020-03-06 14:46:55  来源:igfitidea点击:

为了进行测试,我必须生成一定大小的文件(以测试上传限制)。

在Linux上创建一定大小的文件的命令是什么?

解决方案

使用此命令:

dd if=$INPUT-FILE of=$OUTPUT-FILE bs=$BLOCK-SIZE count=$NUM-BLOCKS

要创建一个大(空)文件,请设置$ INPUT-FILE = / dev / zero。
文件的总大小为$ BLOCK-SIZE * $ NUM-BLOCKS`。
创建的新文件将是$ OUTPUT-FILE。

dd if=/dev/zero of=my_file.txt count=12345

你可以做:

[dsm@localhost:~]$ perl -e 'print "
dd if=/dev/zero of=upload_test bs=file_size count=1
" x 100' > filename.ext

用要写入的字节数替换100。

dd if=/dev/zero of=the_file bs=1 count=0 seek=12345

其中file_size是测试文件的大小(以字节为单位)

只是为了跟进Tom的帖子,我们还可以使用dd创建稀疏文件:

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

int main() {
    int fd = creat("/tmp/foo.txt", 0644);
    ftruncate(fd, SIZE_IN_BYTES);
    close(fd);
    return 0;
}

这将在大多数unix上创建一个带有"空洞"的文件,该数据实际上不会写入磁盘,也不会占用任何空间,直到将零以外的内容写入磁盘为止。

我们可以通过编程方式执行此操作:

# du -B1 --apparent-size /tmp/foo.txt

此方法对于随后将文件映射到内存特别有用。

使用以下命令检查文件的大小是否正确:

# du /tmp/foo.txt

当心:

##代码##

可能会打印0,因为如果文件系统支持,它将分配为稀疏文件。

另请参见:man 2打开,man 2截断