EDIT: Cách đơn giản nhất có lẽ truncate
là câu trả lời của Ashutosh Vishwa Bandhu , nhưng được chỉ ra bởi @ offby1 tạo ra các tệp thưa thớt có thể không phải là điều bạn muốn. Các giải pháp dưới đây tạo tập tin bình thường, đầy đủ.
Các lệnh sau tạo tệp 14MB có tên foo
:
fallocate
(cảm ơn @BreakENC , người đã đề xuất nó trong các bình luận và bỏ phiếu cho câu trả lời của Ahmed Masud bên dưới cũng đề cập đến nó.)
fallocate -l 14000000 foo
Lệnh này đặc biệt ấn tượng vì nó nhanh như truncate
(tức thời) bất kể kích thước tệp mong muốn (không giống như các giải pháp khác sẽ chậm đối với các tệp lớn) và vẫn tạo các tệp bình thường, không phải là các tệp thưa thớt:
$ truncate -s 14MB foo1.txt
$ fallocate -l 14000000 foo2.txt
$ ls -ls foo?.txt
0 -rw-r--r-- 1 terdon terdon 14000000 Jun 21 03:54 foo1.txt
13672 -rw-r--r-- 1 terdon terdon 14000000 Jun 21 03:55 foo2.txt
Tạo một tệp chứa đầy dữ liệu ngẫu nhiên
dd if=/dev/urandom of=foo bs=14MB count=1
hoặc là
head -c 14MB /dev/urandom > foo
Tạo một tệp chứa đầy \0
s:
dd if=/dev/zero of=foo.txt bs=14MB count=1
hoặc là
head -c 14MB /dev/zero > foo
Tạo một tệp chứa đầy 14 MB dữ liệu đầu tiên của tệp khác:
head -c 14MB bar.txt > foo
Tạo một tệp chứa đầy 14 MB dữ liệu cuối cùng của tệp khác:
tail -c 14MB bar.txt > foo
Trong tất cả các ví dụ trên, tệp sẽ là 14*1000*1000
nếu bạn muốn 14*1024*1024
, thay thế MB
bằng M
. Ví dụ:
dd if=/dev/urandom of=foo bs=14M count=1
head -c 14M /dev/zero > foo
fallocate
chỉ giao dịch theo byte, vì vậy bạn phải thực hiện (14 * 1024 * 1024 = 14680064)
fallocate -l 14680064 foo