Tạo tập tin có kích thước nhất định?


106

Tôi muốn tạo một tệp có tên example.file. tôi có thể dùng

touch example.file

nhưng tôi muốn tập tin có kích thước chính xác 24MB. Tôi đã kiểm tra trang chủ của cảm ứng, nhưng không có tham số nào như thế này. Có một cách dễ dàng để tạo các tập tin có kích thước nhất định?



Tất cả chúng ta sẽ cho rằng bạn không quan tâm nội dung chứa quá nhiều số 0 sẽ ổn.
Bss

Câu trả lời:


136

Bạn có thể sử dụng dd:

dd if=/dev/zero of=output.dat  bs=24M  count=1

hoặc là

dd if=/dev/zero of=output.dat  bs=1M  count=24

hoặc, trên Mac,

dd if=/dev/zero of=output.dat  bs=1m  count=24

2
... hoặc sử dụng bs = 1M và đếm = 24. Nhiều người tìm thấy nó đẹp hơn và dễ đọc hơn.
Bss

3
Có thể không sử dụng kích thước khối lớn, hệ thống của tôi không thíchbs=1G count=1
ThorSummoner

10
Trên máy Mac, sử dụng 24m (m nhỏ), vì máy Mac không thích chữ M. lớndd if=/dev/zero of=output.dat bs=24m count=1
XUÂN

1
Trên Android (5.1.1, có thể (không) là phiên bản hoặc điện thoại cụ thể) tôi cũng phải sử dụng chữ thường m.
Erik

1
Vấn đề với kích thước khối lớn cụ thể là gì? Tôi đã hy vọng sử dụng kích thước khối 1G cho tệp 1G.
felwithe

43

Trong Linux hoặc Cygwin không được nhúng (hoặc bất kỳ hệ thống nào có lõi GNU) và FreeBSD:

truncate -s 24m example.file

Điều này tạo ra một tập tin đầy byte rỗng. Nếu tệp đã tồn tại và nhỏ hơn, nó được mở rộng đến kích thước được yêu cầu với byte rỗng. Nếu tệp đã tồn tại và lớn hơn, sẽ bị cắt ngắn theo kích thước được yêu cầu.

Các byte null không tiêu thụ bất kỳ dung lượng đĩa, tệp là một tệp thưa .

Trên nhiều hệ thống, head -c 24m </dev/zero >example.filetạo một tệp không thưa thớt chứa đầy byte rỗng. Nếu headkhông có -ctùy chọn trên hệ thống của bạn (nó phổ biến nhưng không có trong POSIX), bạn có thể sử dụng dd bs=1024k count=24 </dev/zero >example.filethay thế (đây là tuân thủ POSIX).


BusyBox cũng có nó , vì vậy hầu hết các hệ thống nhúng cũng vậy :-)
Ciro Santilli 心 心 事件

29

Nếu bạn không quan tâm đến nội dung của tệp, việc này nhanh hơn nhiều so với sử dụng dd:

fallocate -l 24M filename

Rõ ràng, việc sử dụng ddcho tệp 24 MB sẽ không mất thời gian trên hệ thống hiện đại, nhưng các tệp lớn hơn có thể bị chậm đáng chú ý.


13

Bạn có thể sử dụng dd:

dd if = / dev / zero of = outputfile.out bs = 1024k đếm = 24

Hoặc trong trường hợp bạn đang sử dụng Solaris

mkfile 24m outputfile.out

3
mkfile dường như cũng có mặt trên macOS
Ben Flynn

Bạn cũng có thể vượt qua -nđể tạo một tệp thưa thớt
russbishop

0
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;

1
Điều này không nói 10 megs trong khi Q yêu cầu 24?
Jeff Schaller

2
fallocatecó thể là một câu trả lời tốt, nhưng tại sao tất cả các dòng khác? Cắt câu trả lời của bạn xuống để nó chỉ làm những gì được hỏi, và không có gì hơn.
JigglyNaga

1
Nếu bạn thích thưa ngài: fallocate -l 10M somefile.dump
Pascal Andy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.