Belli bir büyüklükte dosya oluştur?


106

Adı olan bir dosya oluşturmak istiyorum example.file. kullanabilirim

touch example.file

ancak dosyanın tam olarak 24 MB boyutunda olmasını istiyorum. Dokunma kılavuz sayfasını zaten kontrol ettim, ancak böyle bir parametre yok. Belli bir büyüklükteki dosyaları oluşturmanın kolay bir yolu var mı?



İçeriğin ne ile doldurulduğunu umursamadığınızı hepimiz varsayacağız, sıfırlarla doldurulacaktır.
Bgs

Yanıtlar:


136

Dd kullanabilirsiniz:

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

veya

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

veya Mac’te

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

2
... veya bs = İM kullanın ve sayım = 24. Birçoğu okumak daha güzel ve daha kolay bulur.
Bgs

3
Belki büyük blok boyutlarını kullanmak yok, benim sistem gibi değildibs=1G count=1
ThorSummoner

10
Mac'te 24m (küçük m) kullanın, çünkü Mac büyük dd if=/dev/zero of=output.dat bs=24m count=1
M'yi sevmez

1
Android'de (5.1.1, sürüm olabilir veya telefona özgü olabilir) m. Küçük harf kullanmak zorunda kaldım .
Erik,

1
Özellikle büyük blok büyüklüklerinde sorun nedir? 1G dosya için 1G boyutunda bir blok kullanmayı umuyordum.
Ocak’ta

43

Gömülü olmayan Linux veya Cygwin (ya da GNU coreutil içeren herhangi bir sistem) ve FreeBSD altında:

truncate -s 24m example.file

Bu boş bayt dolu bir dosya oluşturur. Dosya zaten varsa ve daha küçükse, boş baytlarla istenen boyuta genişletilir. Dosya zaten varsa ve daha büyükse, istenen boyuta kesilir.

Boş baytlar herhangi bir disk alanı kullanmaz, dosya seyrek bir dosyadır .

Birçok sistemde, head -c 24m </dev/zero >example.fileboş baytlarla dolu seyrek bir dosya oluşturur. Eğer headbir yok -csisteminizde seçeneği (ortak fakat POSIX var), kullanabilirsiniz dd bs=1024k count=24 </dev/zero >example.file(bu POSIX uyumludur) yerine.


BusyBox da o vardır bu yüzden en çok gömülü sistemler de öleceksin :-),
Ciro Santilli新疆改造中心法轮功六四事件

29

Dosyanın içeriğini umursamıyorsanız, bu kullanmaktan çok daha hızlıdır dd:

fallocate -l 24M filename

Açıkçası, 24 ddMB'lık bir dosya kullanmak , modern bir sistemde hiçbir zaman gerektirmez, ancak daha büyük dosyalar gözle görülür şekilde yavaş olabilir.


13

Dd kullanabilirsiniz:

dd eğer = / dev / sıfır = = çıktıdosyası.

Ya da Solaris kullanıyor olmanız durumunda

mkfile 24m outputfile.out

3
mkfile macOS'ta da var gibi görünüyor
Ben Flynn

-nSeyrek bir dosya oluşturmak için de geçebilirsiniz
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
Q, 24'ü isterken bu, 10 milyonluk demiyor mu?
Jeff Schaller

2
fallocateiyi bir cevap olabilir, ama neden diğer tüm satırlar? Cevabınızı kesin, sadece sorulanı yapsın ve daha fazlasını yapmasın.
JigglyNaga

1
Efendim tercih ederseniz: fallocate -l 10M somefile.dump
Pascal Andy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.