ऐसा करने के लिए शायद सरल चाल है, लेकिन मैं मैन पेज से नहीं समझ सकता।
मैं उदाहरण के लिए, अनिर्धारित आकार के साथ फ़ाइल से अंतिम 1MB कैसे काटूं dd
?
ऐसा करने के लिए शायद सरल चाल है, लेकिन मैं मैन पेज से नहीं समझ सकता।
मैं उदाहरण के लिए, अनिर्धारित आकार के साथ फ़ाइल से अंतिम 1MB कैसे काटूं dd
?
जवाबों:
ठीक है, आप मान रहे हैं stat
और bash
, आप फ़ाइल का आकार प्राप्त कर सकते हैं:
stat -c %s your_file
यदि आप $amount
उस फ़ाइल के लिए अंतिम बाइट निकालना चाहते हैं dd
, तो आप निम्न कार्य कर सकते हैं:
dd if=your_file of=extracted_part \
bs=1 count=$amount \
skip=$(( $(stat -c %s your_file) - $amount ))
लेकिन सान करने के लिए दृष्टिकोण का उपयोग करना होगा tail
:
tail -c $(( 1024*1024 )) your_file > target_file
-c
विकल्प नहीं head
?
dd --help उपयोग: dd [OPERAND] ... या: dd विकल्प ऑपरेंड्स के अनुसार एक फाइल कॉपी, कंवर्ट और फॉर्मेट करना। bs = BYTES एक बार में BYTES बाइट्स पढ़ें और लिखें (यह भी देखें ibs =, obs =) cbs = BYTES एक बार में BYTES बाइट्स कन्वर्ट करें conv = CONVS फ़ाइल को अल्पविराम से अलग प्रतीक सूची के अनुसार परिवर्तित करते हैं गणना = BLOCKS केवल BLOCKS इनपुट ब्लॉक कॉपी करता है ibs = BYTES एक बार में BYTES बाइट्स पढ़ें (डिफ़ॉल्ट: 512) if = स्टाइल के बजाय FILE से FILE पढ़ें iflag = FLAGS कॉमा से अलग प्रतीक सूची के अनुसार पढ़ा जाता है अवलोकन = BYTES एक समय में BYTES बाइट्स लिखता है (डिफ़ॉल्ट: 512) की = स्टिलआउट के बजाय फाइल को FILE में लिखें tolag = FLAGS कॉमा से अलग प्रतीक सूची के अनुसार लिखें तलाश = BLOCKS आउटपुट की शुरुआत में BLOCKS ऑब्जर्व-आकार के ब्लॉक छोड़ें छोड़ें = BLOCKS इनपुट के प्रारंभ में BLOCKS ibs- आकार के ब्लॉक छोड़ें स्थिति = noxfer अंतरण सांख्यिकी को दबाती है निम्नलिखित गुणात्मक प्रत्ययों द्वारा BLOCKS और BYTES का अनुसरण किया जा सकता है: c = 1, w = 2, b = 512, kB = 1000, K = 1024, MB = 1000 * 1000, M = 1024 * 1024, xM = M GB = 1000 * 1000 * 1000, G = 1024 * 1024 * 1024, और इतने पर T, P, E, Z, Y के लिए।
यदि फ़ाइल का आकार बिल्कुल 10MB, 1024 * 10 10240K है तो यह अंतिम 1024K को छोड़ देगा। आपको उस ब्लॉक आकार को निर्दिष्ट करना चाहिए जिसे आप ibs और अवलोकन विकल्पों का उपयोग करके काम कर रहे हैं।
1M = 1024K
1024*9 = 9216
dd if=/10/MB/file of=/9/MB/file count=9216K ibs=1K obs=1K
dd if=/10/MB/file of=/9/MB/file count=9M ibs=1M obs=1M
आप फ़ाइल के पहले 1MB को भी छोड़ सकते हैं, पहले 1MB को छोड़ते हुए फ़ाइल के अंत में पढ़ने के लिए स्किप विकल्प का उपयोग कर सकते हैं।
dd if=/10/MB/file of=/9/MB/file skip=1M ibs=1M obs=1M
चाहने वाले विकल्प का उपयोग करके आप अपनी आउटपुट फ़ाइल में एक विशिष्ट स्थान पर लिख सकते हैं। मान लें कि आप पहले 1MB रखना चाहते हैं और अंतिम 8MB लिखना चाहते हैं।
dd if=/10/MB/file of=/9/MB/file skip=1M seek=1M count=8M ibs=1M obs=1M
आपको अपने फ़ाइल आकार के बारे में कुछ विवरण प्राप्त करने की आवश्यकता है ताकि यह सुनिश्चित किया जा सके कि आपको सही मात्रा में डेटा अंदर और बाहर मिल रहा है।
ls -s --block-size 1K ./my/10MB/file
आदमी एल.एस. --block आकार = आकार SIZE-बाइट ब्लॉकों का उपयोग करें। नीचे SIZE प्रारूप देखें -s, - आकार ब्लॉक में प्रत्येक फ़ाइल के आबंटित आकार को प्रिंट करें SIZE हो सकता है (या हो सकता है कि एक पूर्णांक इसके बाद वैकल्पिक रूप से हो) निम्नता: KB 1000, K 1024, MB 1000 * 1000, M 1024 * 1024, और इसी तरह G, T, के लिए पी, ई, जेड, वाई।