Mode console, scripts BASH, SH

 Charge moyenne sur 1mn : 0.08 Charge moyenne sur 5mn : 0.42 Charge moyenne sur 15mn : 0.42


Blocs utilisateurs du site : Infos du compte / droits utilisateurs / récapitulatif

Identifiez-vous

Authentifiez-vous avec votre compte ZW3B et profitez des services membres.

Identifiant :
Mot de passe :
  
  

Move files date YYYYMMDD --> directory YYYY/MM/DD

Déplacer des fichiers de type file-YYYYMMDD.ext vers une directory Year/Month/Day/

Informations

Dates
  • Publication : Dimanche 11 août 2019
  • Modification : Dimanche 11 août 2019

Ayant installer dernièrement le logiciel motion qui permet de capturer (selon votre caméra) des images à la detection de mouvement.

J'ai plusieurs fichiers qui sont stockés automatiquement dans un seul répertoire. Il y a des fichiers vidéos et des fichiers images.

Je souhaite les déplacer dans un répertoire plus approprié et cela avec la date selon cette arborescence /repertoire/par/default/annee/mois/jour/.

ls -l /var/lib/motion/
total 69792
-rw-r--r-- 1 root adm   5051616 août   9 18:12 01-20190809180934.avi
-rw-r--r-- 1 root adm  44925218 août   9 20:38 04-20190809201830.avi
-rw-r--r-- 1 root adm     33473 août  11 12:40 04-20190811195326-203.jpg
-rw-r--r-- 1 root adm    31773 août  11 11:48 05-20190809195748-40.jpg
-rw-r--r-- 1 root adm    232564 août   9 20:40 05-20190809203858.avi

Je me suis fais un script SHell. Le voici vim /root/motion-check.sh ;)

#!/bin/bash

#--------------------------------------------------------------------
# Auteur : LAB3W : O.Romain Jaillet-ramey (orj@lab3w.fr)
#
# Description : Script pour les contents de motion (camera)
# Move images et vidéos dans un répertoire selon la date
#
# Date Create : 2019-08-11
# Date Modify : 2019-08-11
#
#---------------------------------------------------------------------

#DATE="`date +%Y%m%d%H%M%S`";
DATE="`date +%Y/%m/%d`";
#DATE_DAY="`date +%d`";

# ---------------------------------------------------------------------------
DIR="/var/lib/motion/";

IMG="*.jpg";
VID="*.avi";

# ---------------------------------------------------------------------------

function description_script() {
        echo "# ---------------------------------------"
        echo "# Script pour les contents de motion (camera)"
        echo "# Description : Move images et vidéos dans un répertoire selon la date"
        echo "# ----"
        echo ""
}

function directory_day() {

        if [ -e ${DIR}${DATE}/ ] && [ -d ${DIR}${DATE}/ ]; then

                echo -e "Le répertoire de la journée ${DIR}${DATE}/ exist !"

        else

                echo -e "On crée le répertoire de la journée ${DIR}${DATE}/"
                mkdir -p ${DIR}${DATE}/

        fi

        echo ""
}

function list_videos() {

        echo "Liste des Vidéos";
        echo ""

        if [ "`ls -l ${DIR}${VID} 2>/dev/null |wc -l`" -ge "1" ]; then

        for i in ${DIR}${VID}; do

                file=`echo $i |cut -d/ -f 5 |
                awk -F - '{ date_now=substr($(date),7,2); day=substr(,7,2); if (date_now != day)
                print  "-" ""substr(,1,4) ""substr(,5,2) ""substr(,7,2) ""substr(,9,4) ""substr(,13,2) ""substr(,15,4)}'`;

                file_year="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,1,4) }'`";
                file_month="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,5,2) }'`";
                file_day="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,7,2) }'`";

                DIR_4_FILE="${DIR}${file_year}/${file_month}/${file_day}/";

                echo " - On se prépare à déplacer ${DIR}$file vers ${DIR_4_FILE}$file";

                if [ -e ${DIR_4_FILE} ] && [ -d ${DIR_4_FILE} ]; then
                        echo -e "tLe répertoire ${DIR_4_FILE} exist !";
                        echo -e "tt+ ${DIR}$file --> ${DIR_4_FILE}$file"
                        mv ${DIR}$file ${DIR_4_FILE}$file
                        echo ""
                else
                        echo -e "tOn crée le répertoire ${DIR_4_FILE}";
                        mkdir -p ${DIR_4_FILE}
                        echo -e "tt+ ${DIR}$file --> ${DIR_4_FILE}$file"
                        mv ${DIR}$file ${DIR_4_FILE}$file
                        echo ""
                fi

        done;

        else
                echo "- Aucune Vidéo";
        fi

        echo ""

}

function list_images() {

        echo "Listes des images";
        echo ""

        if [ "`ls -l ${DIR}${IMG} 2>/dev/null |wc -l`" -ge "1" ]; then

        for i in ${DIR}${IMG}; do

                file=`echo $i |cut -d/ -f 5 |
                awk -F - '{ date_now=substr($(date),7,2); day=substr(,7,2); if (date_now != day)
                print  "-" ""substr(,1,4) ""substr(,5,2) ""substr(,7,2) ""substr(,9,4) ""substr(,13,2) "-"}'`;

                file_year="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,1,4) }'`";
                file_month="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,5,2) }'`";
                file_day="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,7,2) }'`";

                DIR_4_FILE="${DIR}${file_year}/${file_month}/${file_day}/";

                echo " - On se prépare à déplacer ${DIR}$file vers ${DIR_4_FILE}$file";

                if [ -e ${DIR_4_FILE} ] && [ -d ${DIR_4_FILE} ]; then
                        echo -e "tLe répertoire ${DIR_4_FILE} exist !";
                        echo -e "tt+ ${DIR}$file --> ${DIR_4_FILE}$file"
                        mv ${DIR}$file ${DIR_4_FILE}$file
                        echo ""
                else
                        echo -e "tOn crée le répertoire ${DIR_4_FILE}";
                        mkdir -p ${DIR_4_FILE}
                        echo -e "tt+ ${DIR}$file --> ${DIR_4_FILE}$file"
                        mv ${DIR}$file ${DIR_4_FILE}$file
                        echo ""
                fi
        done;

        else
                echo "- Aucune Image";
        fi

        echo ""
}

description_script
directory_day
list_images
list_videos


echo "# Fin du script";
echo "# ---------------------------------------"

On execute le script de cette manière : /root/motion-check.sh après avoir apliqué les droits d'execution chmod u+x motion-check.sh.

Grâce à ce script j'ai maintenant les vidéos et photos classées par journée. Je m'y retrouve plus facilement ; je peut alors faire des rsync sur un autre serveur etc. On pourait lancer le script tous les jours en fin de journée par tache planifiée ; une crontab ;)


Cordialement, Romain


<< Couper, fractionner une date YYYYMMDD

RaspBerry Pi III - Introduction >>





Autheur de la page

LAB3W.ORJ

LAB3W.ORJ

  • Prénom : Olivier Romain Luc
  • Nom : Jaillet-ramey
  • Arrivé le mardi 19 octobre 1976 (1976/10/19 00:00)
    43 ans d'activité !

Firefox Nighlty

Nos amis de Framasoft s'intéressent à Mozilla et leur ont posé des questions à propos de Nightly : Firefox Night-club, entrée libre !






Valid XHTML 1.0 Strict CSS Valide !

ipv6 ready