![]() |
Récréation UNIX
|
Décemvre 2020 |
L'exploitation d'une caméra de surveillance avec un Raspberry et le logiciel "motion" produit un nombre très important de fichier, un par image et un par film en cas de détection de modification de pixel sur l'image captée par la caméra donc plus ça bouge plus il y a d'image ! Donc on se retrouve avec un répertoire qui déborde de fichier. Le but ici est d'identifier rapidement les horaires ou il y a eu le plus de mouvement et ainsi aller à l'essentiel !
La commande ls permet donc de lister les fichiers d'un répertoire avec l'option -l on obtient un affichage par ligne avec les principales infos
avec l'option -c on affiche les dates de changement des statuts des fichiers.
Pour compter le nb de ligne d'un fichier on utilise
wc -l nomdefichier.
Ici nous voulons compter le nombre de ligne du résultat de notre commande ls, nous allons donc utiliser le caractère "pipe" "|" (trait vertical sur le chiffre 6 du clavier).
Ce caractère indique à unix que le résultat de la première commande de la ligne va être exploitée par la commande qui suit le pipe.
Donc ls -lc nomderep liste les fichiers et wc -l va compter les lignes de cette liste.
La commande ls -l | wc -l affiche donc 440 dans mon exemple.
La commande "cut" va nous permettre de découper la date et l'heure comprises dans le nom de chaque fichier.
L'option -d permet de spécifier un séparateur dans ce cas j'ai choisi le tiret l'option devient donc -d-
L'option -f permet d'extraire le numéro du champ spécifié donc pour nous le 8eme (chaque champ est donc séparé par un tiret).
ls -lc ./motion/*.jpg | cut -d- -f8 va donc ne nous garder que la date et l'heure comprises dans le nom de chaque fichier.
La commande "cut" va à nouveau nous permettre de découper la date et l'heure comprises dans le résultat précédent (les minutes et les secondes ne m'intéressent pas).
L'option -c permet de spécifier une zone d'extraction -c1-10 va donc ne garder que du 1er au 10eme caractère.
La commande "sort" va nous permettre de trier efficacement les dates par ordre numérique.
L'option -n spécifie un tri numérique.
La commande "uniq" va éliminer les doublons.
L'option -c va par contre compter le nombre de chaque occurrence.
La commande "sort" va permettre de trier le résultat afin de mettre en évidence les heures ou il y a eu le plus de mouvement.
L'option -nr signifie trie numérique à rebours.
Pour terminer le résultat définitif est envoyé dans un fichier à l'aide d'une redirection avec le caractère ">".
Ensuite il est facile d'afficher le fichier avec la commande "cat"
sudo ls -lc ./motion/*.jpg | cut -d- -f8 | cut -c1-10 | sort -n | uniq -c | sort -nr > /home/pi/nb_h.txt