2011-02-23 19 views
6

Linux'ta (ve/veya diğer Unix'te) 'shrink' dosyası baştan mümkün mü? Kalıcı sıra için kullanmak istiyorum (mevcut hiçbir uygulama benim ihtiyaçlarına uygun değil). Dosyanın sonunda tahminim truncate() ile mümkündür.linux'un başlangıcından itibaren küçült (truncate) dosyası

+0

Bu yazıyı yazdıktan sonra 'truncate begin' yapmaya başladım ve bu mümkün değil gibi görünüyor. – woky

cevap

-5

Aşağıdaki Python komut dosyasını kullanarak 64 000 000 bayt argüman olarak verilen dosyayı kesilmiş adres:

#!/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

Bu, dosyanın sonunu kesecek ve OP özellikle dosyanın başlangıcını kesmekle ilgili sorular sordu. – rascalking

-2

Evet, bir dosyanın bölümlerini kaldırmak için cut veya tail kullanabilirsiniz.

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

etkili bir dosyanın ilk 16 bayt kaldırarak, 17 byte başlayan input_file içeriği çıktısı verir. cut örneğinin de çıktıya yeni satır ekleyeceğini unutmayın.

+0

Bazı sistem çağrıları yoluyla dosyanın yerinde yerinde güncellenmesiyle ilgileniyordum. Önerdiğin şey o değil. – woky

+0

Bu durumda, sisteme, yukarıdaki komutların "strace" üzerinden yaptıklarını ve yalnızca komut satırını ayrıştırma işleminin değil, işlemin "etini" yaptıklarını görebilirsiniz. – MikeK

İlgili konular