1. Génération de noms de fichiers

Pour éviter d’avoir à taper les noms complets des fichiers, mais aussi pour pouvoir représenter plusieurs fichiers sous forme concise, il existe des raccourcis pour écrire les noms de fichiers ou de dossiers. Ces raccourcis vont permettre par exemple de déplacer tous les fichiers dont le nom finit par .jpg dans un répertoire images ou encore de supprimer tous les fichiers dont le nom contient un chiffre.

  1. Créez un dossier test dans votre répertoire personnel.
  2. Placez vous dans le dossier ~/test.
  3. Créez des fichiers toto, t1t, tata, .ut, tut, ete, 213, 7t7, t3t2t4, toutou et tutu.jpg.
  4. Veillez à ce qu'aucun des fichiers précédemment créés ne reste vide et contienne au minimum une phrase rappelant le nom du fichier, par exemple pour le fichier tut, un contenu approprié serait Ici tut.
  5. Essayez les commandes ls *u*, ls t*t* et ls t?t?.

Le caractère * peut remplacer n’importe quelle suite de caractères, le caractère ? peut remplacer n’importe quel caractère (mais un seul).

Par défaut, les jokers * et ? ne peuvent jamais remplacer un caractère . en début de mot ou immédiatement après un /. Dans ces cas, le caractère . doit être matché explicitement.

  1. Dans votre dossier personnel, exécuter les commandes suivantes :
    
    curl https://homepages.loria.fr/dmery/cours/r108/imdata.sh > ~/imdata.sh
    chmod +x ~/imdata.sh
    ~/imdata.sh
    
    
    Si le script imdata.sh s'est correctement exécuté, vous devriez maintenant avoir un répertoire /tmp/matlab/toolbox/images/imdata. Vérifiez que c'est bien le cas avant de continuer.

Dans le dossier /tmp/matlab/toolbox/images/imdata/ se trouvent des fichiers dont le nom se termine par .png (des images) et des fichiers dont le nom se termine par .avi (des films).

  1. Créez des dossiers images et videos dans ~/test.
  2. Proposez une commande pour copier toutes les images png dans le dossier images et une commande pour copier tous les films avi dans le dossier videos.
  3. Comment peut-on afficher les tailles en kibi-octets (2^10 octets), puis en kilo-octets (10^3 octets) de toutes les images png dont le nom commence par un t (lisez le man de la commande du d'abord) ? dont le nom contient un u ? dont le nom comporte un o en deuxième lettre ? dont le nom comporte un t en deuxième lettre ?
  4. Replacez vous dans votre dossier test

Un mécanisme plus complexe permet de sélectionner des ensembles de noms de fichiers comportant un caractère parmi une liste : les classes de caractères. Les classes de caractères s’écrivent de la façon suivante : [aef] ou encore [a-f0-9]. Le premier motif représente soit un e, soit un a, soit un f. Le deuxième représente soit une lettre minuscule entre a et f, soit un chiffre (ce qui nous donne les chiffres hexadécimaux).

  1. Testea la commande cat t[a-o]*, la commande ls ?[tu]*.
  2. Proposez une commande permettant de lister tous les fichiers dont la deuxième lettre est un u (le fichier .ut doit donc faire partie du résultat).
  3. Proposez une commande supprimant tous les fichiers dont le nom commence par un chiffre.
  4. Proposez une commande supprimant tous les fichiers dont le nom comporte un chiffre.