Outils pour utilisateurs

Outils du site


tp2

Ceci est une ancienne révision du document !


Splitter de fichiers

Durée : 4 heures


Q1. Diviser un fichier texte en 2 parties

  • A l'aide de la commande wc et des commandes head et tail, proposez un script split-2.sh qui permet la division d'un fichier texte passé en paramètre en deux parties de taille égales (le plus possible au moins). Le nom du fichier texte a diviser sera passé en paramètre (y compris avec une arborescence). Le préfixe des fichiers issus de la division sera le nom du fichier source. Les extensions des deux fichiers seront respectivement .sp1 et .sp2
    • Keys : head, tail, cat, wc, dirname, basename

Q2. Reformer un fichier qui a été divisé en 2 parties

  • Construisez la commande group-2.sh permettant la reconstruction à partir des fichiers issus de split-2.sh. Le script group-2.sh admet un seul paramètre : le préfixe des fichiers constituant la source.
    • Keys : head, cat, redirection de stdout

Q3. En N parties équivalentes

  • Copiez et modifiez split-2.sh afin de construire le script split-n.sh permettant le partage - en parties de tailles équivalentes - d'un fichier passé en paramètre. Le nombre de divisions N sera passé en paramètre du script split-n.sh. Cette valeur N sera stockée en première ligne de la série de fichiers de partage avec le nom du fichier original.
  • Copiez et modifiez group-2.sh afin de construire le script group-n.sh permettant la fusion des fichiers de partage. Sur la première ligne du premier fichier de partage se trouve N, le nombre de parties et le nom du fichier original. La valeur N récupérée permettra de vérifier si l'ensemble des fichiers nécessaires à la reconstruction sont fournis. Le nom du fichier original permettra de recomposer sous le même nom qu'à l'origine. En conséquence, group-n.sh ne prend qu'un seul paramètre : le préfixe des fichiers à recomposer.
  • uuencode/uudecode
    • uuencode [fichier] nom : est utilisé pour encoder un fichier en n’utilisant que des caractères ASCII 7 bits (codes entre 0 et 127), par exemple pour le transmettre sur un réseau ne transmettant que les 7 bits de poids faible. uuencode lit le fichier (ou stdin si l’on ne précise pas de nom) et écrit la version encodée sur la sortie standard stdout. Le paramètre nom précise le nom du fichier pour le décodage par uudecode.
    • uudecode [fichier] : Décode un fichier encodé par uuencode. Si l’argument fichier n’est pas spécifié, uudecode lit stdin. Le nom du fichier résultat est précisé dans le codage (paramètre nom de uuencode).
    • Afin de vous exercer, réalisez un uuencodage d'un fichier de votre choix. Choisissez par exemple le fichier vi-ref.pdf disponible en annexe de la page du module de système d'exploitation.
    • On souhaite maintenant traiter les fichiers de nature binaire en plus des fichiers ASCII. Utilisez uuencode et uudecode pour adapter split-2.sh dans ce but. Modifiez group-2.sh en conséquence.
      • Keys : uuencode, uudecode, head, tail, cat, wc
  1. A partir de split-2.sh et group-2.sh, construisez splitter.sh. splitter.sh admettra un paramètre supplémentaire indiquant un nombre variable de parties issues de la division. La division devra se faire à part égales. Lorsque ce paramètre ne sera pas un nombre mais l'option -d ou -g, splitter.sh procède à la reconstruction du fichier qui lui est passé en paramètre (qui est un préfixe dans ce cas).
    • Keys : uuencode, uudecode, wc, cat, let, redirection de stdout

tp2.1547460760.txt.gz · Dernière modification : 2019/01/14 10:12 de gilles