एक निश्चित आकार की फ़ाइल उत्पन्न करें?


106

मैं नाम के साथ एक फ़ाइल जेनरेट करना चाहता हूं example.file। मैं प्रयोग कर सकता हूँ

touch example.file

लेकिन मैं चाहता हूं कि फ़ाइल आकार में बिल्कुल 24MB हो। मैंने पहले से ही स्पर्श के मैनपेज की जाँच की, लेकिन इस तरह का कोई पैरामीटर नहीं है। क्या एक निश्चित आकार की फ़ाइलों को उत्पन्न करने का एक आसान तरीका है?



हम सब मान लेंगे कि आपको इस बात की परवाह नहीं है कि सामग्री इतनी ज़ीरो से भरी हुई है या नहीं।
BGS

जवाबों:


136

आप dd का उपयोग कर सकते हैं:

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

या

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

या, मैक पर,

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

2
... या bs = 1M और count = 24 का उपयोग करें। कई लोग इसे अच्छे और पढ़ने में आसान पाते हैं।
BGS

3
शायद विशाल ब्लॉक आकार का उपयोग न करें, मेरा सिस्टम पसंद नहीं आयाbs=1G count=1
ThorSummoner

10
मैक पर, 24m (छोटे मीटर) का उपयोग करें, क्योंकि मैक बड़े एम को पसंद नहीं करता हैdd if=/dev/zero of=output.dat bs=24m count=1
SPRBRN

1
Android पर (5.1.1, संस्करण या फोन विशिष्ट नहीं हो सकता है) मुझे एक लोअरकेस का mभी उपयोग करना पड़ा ।
एरिक

1
विशेष रूप से बड़े ब्लॉक आकार के साथ समस्या क्या है? मैंने 1G फ़ाइल के लिए 1G ब्लॉक आकार का उपयोग करने की उम्मीद की थी।
felwithe

43

गैर-एम्बेडेड लिनक्स या Cygwin (या GNU Coreutils के साथ कोई भी सिस्टम) और FreeBSD के तहत:

truncate -s 24m example.file

यह नल बाइट्स से भरा एक फ़ाइल बनाता है। यदि फ़ाइल पहले से मौजूद है और छोटी है, तो इसे नल बाइट्स के साथ अनुरोधित आकार में विस्तारित किया गया है। यदि फ़ाइल पहले से मौजूद है और बड़ी है, तो उसे अनुरोधित आकार में काट दिया जाता है।

नल बाइट्स किसी भी डिस्क स्थान का उपभोग नहीं करते हैं, फ़ाइल एक विरल फ़ाइल है

कई प्रणालियों पर, head -c 24m </dev/zero >example.fileनल बाइट्स से भरा एक गैर-विरल फ़ाइल बनाता है। यदि आपके headपास -cआपके सिस्टम पर कोई विकल्प नहीं है (यह सामान्य है लेकिन POSIX में नहीं है), तो आप dd bs=1024k count=24 </dev/zero >example.fileइसके बजाय उपयोग कर सकते हैं (यह POSIX-compliant है)।


बिजीबॉक्स में भी है , इसलिए अधिकांश एम्बेडेड सिस्टम भी :-)
सिरो सेंटिल्ली 改造,,,

29

यदि आप फ़ाइल की सामग्री के बारे में परवाह नहीं करते हैं, तो यह उपयोग करने की तुलना में बहुत तेज़ है dd:

fallocate -l 24M filename

जाहिर है, dd24MB फ़ाइल के लिए उपयोग करने से आधुनिक सिस्टम में कोई समय नहीं लगेगा, लेकिन बड़ी फ़ाइलों को काफी धीमा किया जा सकता है।


13

आप dd का उपयोग कर सकते हैं:

dd if = / dev / zero of = outputfile.out bs = 1024k count = 24

या मामले में आप Solaris का उपयोग कर रहे हैं

mkfile 24m outputfile.out

3
मैकफाइल मैकओएस पर भी मौजूद लगता है
बेन फ्लिन

तुम भी -nएक विरल फ़ाइल बनाने के लिए पारित कर सकते हैं
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
क्या यह 10 megs नहीं कहता है जबकि Q 24 मांगता है?
जेफ स्कालर

2
fallocateएक अच्छा जवाब हो सकता है, लेकिन अन्य सभी लाइनें क्यों? अपने उत्तर को काटें ताकि वह वही करे जो पूछा गया था, और अधिक कुछ नहीं।
जिग्गलीनागा

1
अगर आप सर को पसंद करते हैं: fallocate -l 10M somefile.dump
पास्कल एंडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.