1. Statistiques sur un répertoire
1.1. Description
J'aimerais bien avoir des statistiques sur mes 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
. Vous pouvez vous reporter aux
sections pertinentes dans la liste des commandes
du shell.
Il n'est pas nécessaire d'écrire des boucles pour cette fonction : chaque information peut être calculée directement avec une commande shell. Par exemple, voila une manière simple de compter le nombre de répertoires vides :
$ find -type d -empty | wc -l
Pour le reste, reportez vous aux sections suivantes avant de commencer :
Pour vérifier la valeur de l'argument, il faudra se référer à :
1.4. Pour aller plus loin
-
vous pouvez ajoutez d'autres niveaux de détails,
-
vous pouvez ajouter des options pour choisir individuellement les informations affichées,
-
etc.