J'ai quelques fichiers de taille> 1 Go chacun. J'ai besoin de supprimer les derniers octets des fichiers. Comment puis-je le faire? Je préfère modifier le fichier en place pour économiser de l'espace disque.
Je suis sur HP-UX.
J'ai quelques fichiers de taille> 1 Go chacun. J'ai besoin de supprimer les derniers octets des fichiers. Comment puis-je le faire? Je préfère modifier le fichier en place pour économiser de l'espace disque.
Je suis sur HP-UX.
Réponses:
Essayez d'utiliser hexedit Je ne l'ai pas essayé sur HP-UX mais cela devrait fonctionner. Il vous permet de vous déplacer vers un emplacement dans un fichier et de le tronquer. Je suis à peu près sûr qu'il ne lit pas le fichier entier mais cherche simplement l'emplacement approprié pour l'affichage.
L'utilisation est assez simple une fois que vous l'avez lancée, les touches fléchées vous permettent de vous déplacer. F1 donne de l'aide. Ctrl-G se déplace vers un emplacement dans le fichier (astuce: pour se déplacer jusqu'à la fin, utilisez la taille du fichier à partir de la ligne inférieure de l'affichage). Positionnez le curseur sur le premier octet que vous souhaitez tronquer, puis appuyez sur Echap T une fois que vous avez confirmé que la troncature aura été effectuée. Ctrl-x se ferme.
Coupez 2 kilo-octets de la fin du fichier:
truncate -s-2K file
Vous pouvez utiliser dd par exemple:
dd if=yourfile of=outname bs=4k count=thefirstX4kb
Utilisez un outil qui vous donne accès à l' truncate
appel système. Vous ne pouvez le faire qu'avec les outils POSIX. Attention, tapé dans un navigateur; soyez particulièrement prudent car il dd
est encore plus impitoyable d'erreurs que la commande unix habituelle. 123456 est le nombre d'octets à conserver.
dd if=/dev/null of=/file/to/truncate seek=1 bs=123456
Une version Perl est beaucoup plus lisible:
perl -e 'truncate "$ARGV[0]", 123456 or die $!' /file/to/truncate
Vous pouvez utiliser split
ou ed
, awk
ou n'importe quel langage de programmation.
vim
a une limite 4G (pourrait être faux) mais je ne pense pas qu'il le fasse en place (pourrait être faux).