2011-02-23 7 views
6

Est-il possible dans Linux (et/ou sur un autre Unix) de rétrécir le fichier? Je voudrais l'utiliser pour une file d'attente persistante (aucune implémentation existante ne correspond à mes besoins). De la fin du fichier, je suppose que c'est possible avec truncate().rétrécir (tronquer) le fichier depuis le début sur linux

+0

J'ai commencé à googler "début tronqué" après avoir écrit ce post et il semble que ce ne soit pas possible. – woky

Répondre

-5

Je fichier tronqué donné comme argument à 64 000 000 octets en utilisant le script Python suivant:

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

Cela va couper la fin du fichier, et l'OP a spécifiquement demandé de couper le début du fichier. – rascalking

-2

Oui, vous pouvez utiliser cut ou tail pour éliminer les parties d'un fichier.

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

Cette sortie sera le contenu de fichier_entrée à partir du 17 octet, éliminant efficacement les 16 premiers octets du fichier. Notez que l'exemple cut ajoutera également une nouvelle ligne à la sortie.

+0

Je me suis intéressé à la mise à jour efficace du fichier via un appel système. Ce que vous suggérez n'est-ce pas. – woky

+0

Dans ce cas, vous pouvez regarder les appels système que font les commandes ci-dessus via 'strace' et ne faire que le 'meat' de l'opération et pas tout le parsing de la ligne de commande, etc. – MikeK

Questions connexes