2011-02-23 8 views
6

से शुरुआत से फ़ाइल को हटाना (छंटनी) फ़ाइल क्या लिनक्स (और/या अन्य यूनिक्स पर) 'सिकंक' फ़ाइल शुरुआत से संभव है? मैं इसे लगातार कतार के लिए उपयोग करना चाहता हूं (कोई मौजूदा कार्यान्वयन मेरी आवश्यकताओं के अनुरूप नहीं है)। फ़ाइल के अंत से मुझे लगता है कि यह truncate() के साथ संभव है।लिनक्स

+0

मैंने इस पोस्ट को लिखने के बाद 'ट्रंकेट शुरुआत' शुरू किया और ऐसा लगता है कि यह संभव नहीं है। – woky

उत्तर

-5

मैं निम्नलिखित पायथन स्क्रिप्ट का उपयोग कर 64 000 000 बाइट्स तर्क के रूप में दिए गए फ़ाइल छोटी है

#!/usr/bin/env python 

import sys 
import os 

file = sys.argv[1] 
f = os.open(file, os.O_RDWR) 
os.ftruncate(f, 64000000) 
os.close(f) 
+0

यह फ़ाइल के अंत को तोड़ने जा रहा है, और ओपी ने विशेष रूप से फ़ाइल की शुरुआत को रोकने के बारे में पूछा। – rascalking

-2

हाँ, आप cut या tail उपयोग कर सकते हैं एक फ़ाइल के कुछ भागों को दूर करने के।

cut -b 17- input_file
tail -c +17 input_file

हो जाएगा ताकि उत्पादन 17 बाइट से शुरू, प्रभावी रूप से फ़ाइल के पहले 16 बाइट्स को दूर करने input_file की सामग्री। ध्यान दें कि cut उदाहरण आउटपुट में एक नई लाइन भी जोड़ देगा।

+0

मुझे कुछ सिस्टम कॉल के माध्यम से फ़ाइल के कुशल इन-प्लेस अपडेट में दिलचस्पी थी। आप जो सुझाव देते हैं वह नहीं है। – woky

+0

उस स्थिति में, आप सिस्टम कॉल को देख सकते हैं कि उपरोक्त आदेश 'स्ट्रेस' के माध्यम से कर रहे हैं और केवल ऑपरेशन के 'मांस' को करें और सभी कमांड लाइन पार्सिंग आदि नहीं। – MikeK