Vous pouvez utiliser la commande truncate :
truncate --size=1G test.txt
SIZE peut être spécifié en octets, Ko, K, Mo, M, etc. Je suppose que vous pouvez calculer la taille souhaitée à la main ; sinon, vous pouvez probablement utiliser la commande stat pour obtenir des informations sur la taille actuelle du fichier.
perl -we 'open( FILE, "< ./test.txt" ) && truncate( FILE, 8 ) && close(FILE);'
ouvre le fichier en lecture. Cependant, pour tronquer le fichier, vous devez le modifier, donc un descripteur de fichier en lecture seule ne fonctionnera pas. Il faut utiliser le mode "modifier" ("+>"
).
En parallèle, cela m'étonne toujours lorsque les gens laissent les appels système échouer en silence, puis demandent ce qui ne va pas. Un essentiel une partie du diagnostic d'un problème consiste à examiner le message d'erreur produit ; même si vous ne le comprenez pas, cela facilite grandement la vie de ceux à qui vous demandez de l'aide.
Ce qui suit aurait été un peu plus utile :
perl -we 'open(FILE, "<", "./test.txt") or die "open: $!";
truncate(FILE, 8) or die "truncate: $!";
close(FILE);'
bien qu'il soit vrai que cela n'aurait signalé qu'un "argument invalide". Néanmoins, il s'agit d'informations utiles qui pourraient bien vous avoir amené à la conclusion que le mode ouvert était erroné (comme ce fut le cas pour moi).
Vous pouvez utiliser tail
pour couper les 1000 derniers octets, exemple :
tail -c 1000 fichier> fichier2
le -c affiche les 1000 derniers octets du fichier, pour plus d'options :
queue d'homme
Pour remplacer le fichier d'origine par le fichier que vous venez de générer :
fichier mv2 fichier