J'écris un script bash qui doit obtenir l'en-tête (les 10 premiers octets) d'un fichier et ensuite dans une autre section obtenir tout sauf les 10 premiers octets. Ce sont des fichiers binaires et auront probablement \0
et \n
dans les 10 premiers octets. Il semble que la plupart des utilitaires fonctionnent avec des fichiers ASCII. Quel est un bon moyen d'accomplir cette tâche?Comment obtenir seulement les dix premiers octets d'un fichier binaire
Répondre
Pour obtenir les 10 premiers octets, comme déjà noté:
head -c 10
Pour obtenir tous, mais les 10 premiers octets (au moins avec GNU tail
):
tail -c+11
head -c 10
fait la bonne chose ici.
Il est intéressant que cette réponse était la première, c'est correct, mais les autres ont beaucoup plus de votes. – robert
Vous pouvez utiliser la commande dd
pour copier un nombre arbitraire d'octets à partir d'un fichier binaire.
dd if=infile of=outfile1 bs=10 count=1
dd if=infile of=outfile2 bs=10 skip=1
Cela fonctionne mais c'est assez lent. Le bs de 10 tue ces énormes fichiers. Existe-t-il un moyen plus rapide d'ignorer les dix premiers octets? Cela semble si simple. – User1
Oui. J'ai aimé l'idée 'dd' mais cette option ne nécessite pas de changement de la taille de la mémoire tampon, donc cela fonctionne bien avec les gros fichiers. Merci. – User1