0% ont trouvé ce document utile (0 vote)
377 vues5 pages

Mini Projets Unix

Le document décrit deux mini-projets. Le premier concerne l'analyse de statistiques sur des fichiers dans un répertoire, le second le renommage de fichiers photos avec une date dans le nom de fichier.

Transféré par

NoureddineRmila
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
377 vues5 pages

Mini Projets Unix

Le document décrit deux mini-projets. Le premier concerne l'analyse de statistiques sur des fichiers dans un répertoire, le second le renommage de fichiers photos avec une date dans le nom de fichier.

Transféré par

NoureddineRmila
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Mini projet 1 : Statistiques sur des fichiers

1.1. Description
L’objectif du projet est d’avoir des statistiques sur des fichiers :

 taille totale occupée


 taille occupée par les fichiers / répertoires cachés
 nombres de petits (moins de 512kio) et gros fichiers (plus de 15Mio)
 nombre de fichiers et répertoires vides (qui peuvent probablement être
supprimés)
 nombres de fichiers Python, ou html, etc.
 ...

1.2. Objectif
Le script devra fournir une fonction qui analyse le contenu du répertoire
courant et de ses sous-répertoires et afficher des statistiques. La quantité de
détails dépendra de la valeur de l'argument donné à la fonction :

 1 (ou pas d'argument) : peu de détails


 2 : un peu plus de détails
 3 : beaucoup de détails

Voici un exemple d'exécution

$ pwd

/home/hyvernat/info202/

$ statistiques

Analyse de /home/hyvernat/info202/ :

- 45 répertoires

- 114 fichiers

- taille totale : 18M

$ statistiques 2

Analyse de /home/hyvernat/info202/ :
- 45 répertoires

- 1 répertoire caché

- 0 répertoire vide

- 114 fichiers dont

- 3 fichiers cachés

- 1 fichier vide

- taille totale : 18M

$ statistiques 3

Analyse de /home/hyvernat/info202/ :

- 45 répertoires

- 1 répertoire caché

- 0 répertoire vide

- 114 fichiers dont

- 3 fichiers cachés

- 1 fichier vide

- 87 fichiers de moins de 512kio

- 0 fichier de plus de 15Mio

- le plus gros fichier est

/home/hyvernat/info202/CM1/Img/RAM_old-
plane_4k.jpg

Il y a :

- 5 fichiers Python

- 17 fichiers image

- 0 fichier vidéo
- taille totale : 18M

1.3. Précisions
L'ingrédient principal de cette fonction sera la commande find et des
redirections CMD1 | CMD2.
Par exemple, voilà une manière simple de compter le nombre de
répertoires vides :

$ find -type d -empty | wc -l

Vous pouvez aussi utiliser :


 Commandes cut et tr
 Commande file
 Commande du

1.4. Exemple d’une fonction


NB : Arguments individuels d'une fonction

Pour accéder aux premiers arguments individuellement, il faut utiliser les


variables $1, $2, ... $9.
Pour accéder aux arguments suivants (après le numéro 9), il faut "décaler" les
arguments. La commande shift supprime le premier argument et décale les
suivants. Ainsi, après un shift, la variable $1 contient l'argument numéro 2, etc.
Par exemple, si le fichier args.sh contient
#!/bin/bash

function montre_args() {
echo "Tous les arguments : $@"
echo "Argument 1: $1"
shift
echo "Autres arguments : $@"
}
on aura

$ source ./args.sh

$ montre_args ananas pomme poire kiwi

Tous les arguments : ananas pomme poire kiwi


Argument 1: ananas

Autres arguments : pomme poire kiwi

Mini projet 2 : Renommer des fichiers


photos
2.1. Description
Les photos prises par mon téléphone ont des noms pas très jolis
: IMG_20160312_124305306.jpg, etc.. Pour les archiver, j'aimerais les
renommer en WeekEnd_2016-02-12_16-35-12.jpg, WeekEnd_2016-02-
12_16-36-24.jpg, etc.

2.2. Objectif
Dans l'exemple précédent, c'est l'utilisateur qui choisit explicitement le
préfixe WeekEnd. La date et l'heure sont automatiquement ajoutées au nom de
fichier.
Voici un exemple d'utilisation :

$ source ./renomme.sh

$ ls *.jpg

IMG_123456789.jpg IMG_928332498.jpg IMG_987654321.jpg

$ renomme Lac *.jpg

IMG_123456789.jpg ==> Lac_2015-08-30_16-52-52.jpg

IMG_928332498.jpg ==> Lac_2015-09-04_16-34-07.jpg

IMG_987654321.jpg ==> Lac_2015-08-30_16-53-27.jpg

$ ls *.jpg

Lac_2015-08-30_16-52-52.jpg Lac_2015-08-30_16-53-27.jpg
Lac_2015-09-04_16-34-07.jpg

2.3. Précisions
Vous aurez besoin de récupérer l'extension d'un fichier contenu dans une
variable. Pour ceci, l'incantation magique suivante convient : si la variable
s'appelle img, on peut faire
ext=${img##*.}
Attention, dans le shell, le symbole _ peut faire partie du nom d'une variable.
Pour cette raisson, $img_$prefix ne sera pas interprété comme "la
variable $img suivie d'un _ suivi de la variable $prefix", mais comme "la
variable $img_ (qui n'existe probablement pas) suivie de la variable $prefix".
La solution est de mettre le nom de la variable entre accolades
: ${img}_$prefix.

 Ajouter un compteur pour différencier les photos qui sont prises pendant la
même seconde. (C'est courant lorsque vous utilisez votre appareil en mode
rafale.)
 etc.

Compléments sur le shell


Fonctions shell
On peut définir une fonction dans un script bash de la manière suivante :
function test() {
CMD1
CMD2
CMD3
...
}

Vous aimerez peut-être aussi