Comment faire : Mode console, scripts BASH, SH...
 Charge moyenne sur 1mn : 0.43 Charge moyenne sur 5mn : 0.95 Charge moyenne sur 15mn : 0.76




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
  • Création : Dimanche 11 août 2019
  • Publication : Dimanche 11 août 2019
  • Modification : Dimanche 11 août 2019

Partager

Traduire la page

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/.

001 ls -l /var/lib/motion/
002 total 69792
003 -rw-r--r-- 1 root adm   5051616 août   9 18:12 01-20190809180934.avi
004 -rw-r--r-- 1 root adm  44925218 août   9 20:38 04-20190809201830.avi
005 -rw-r--r-- 1 root adm     33473 août  11 12:40 04-20190811195326-203.jpg
006 -rw-r--r-- 1 root adm    31773 août  11 11:48 05-20190809195748-40.jpg
007 -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 ;)

001 #!/bin/bash
002 
003 #--------------------------------------------------------------------
004 # Auteur : LAB3W : O.Romain Jaillet-Ramey (orj@lab3w.fr)
005 #
006 # Description : Script pour les contents de motion (camera)
007 # Move images et vidéos dans un répertoire selon la date
008 #
009 # Date Create : 2019-08-11
010 # Date Modify : 2019-08-11
011 #
012 #---------------------------------------------------------------------
013 
014 #DATE="`date +%Y%m%d%H%M%S`";
015 DATE="`date +%Y/%m/%d`";
016 #DATE_DAY="`date +%d`";
017 
018 # ---------------------------------------------------------------------------
019 DIR="/var/lib/motion/";
020 
021 IMG="*.jpg";
022 VID="*.avi";
023 
024 # ---------------------------------------------------------------------------
025 
026 function description_script() {
027         echo "# ---------------------------------------"
028         echo "# Script pour les contents de motion (camera)"
029         echo "# Description : Move images et vidéos dans un répertoire selon la date"
030         echo "# ----"
031         echo ""
032 }
033 
034 function directory_day() {
035 
036         if [ -e ${DIR}${DATE}/ ] && [ -d ${DIR}${DATE}/ ]; then
037 
038                 echo -e "Le répertoire de la journée ${DIR}${DATE}/ exist !"
039 
040         else
041 
042                 echo -e "On crée le répertoire de la journée ${DIR}${DATE}/"
043                 mkdir -p ${DIR}${DATE}/
044 
045         fi
046 
047         echo ""
048 }
049 
050 function list_videos() {
051 
052         echo "Liste des Vidéos";
053         echo ""
054 
055         if [ "`ls -l ${DIR}${VID} 2>/dev/null |wc -l`" -ge "1" ]; then
056 
057         for i in ${DIR}${VID}; do
058 
059                 file=`echo $i |cut -d/ -f 5 |
060                 awk -F - '{ date_now=substr($(date),7,2); day=substr($2,7,2); if (date_now != day)
061                 print $1 "-" ""substr($2,1,4) ""substr($2,5,2) ""substr($2,7,2) ""substr($2,9,4) ""substr($2,13,2) ""substr($2,15,4)}'`;
062 
063                 file_year="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr($2,1,4) }'`";
064                 file_month="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr($2,5,2) }'`";
065                 file_day="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr($2,7,2) }'`";
066 
067                 DIR_4_FILE="${DIR}${file_year}/${file_month}/${file_day}/";
068 
069                 echo " - On se prépare à déplacer ${DIR}$file vers ${DIR_4_FILE}$file";
070 
071                 if [ -e ${DIR_4_FILE} ] && [ -d ${DIR_4_FILE} ]; then
072                         echo -e "\tLe répertoire ${DIR_4_FILE} exist !";
073                         echo -e "\t\t+ ${DIR}$file --> ${DIR_4_FILE}$file"
074                         mv ${DIR}$file ${DIR_4_FILE}$file
075                         echo ""
076                 else
077                         echo -e "\tOn crée le répertoire ${DIR_4_FILE}";
078                         mkdir -p ${DIR_4_FILE}
079                         echo -e "\t\t+ ${DIR}$file --> ${DIR_4_FILE}$file"
080                         mv ${DIR}$file ${DIR_4_FILE}$file
081                         echo ""
082                 fi
083 
084         done;
085 
086         else
087                 echo "- Aucune Vidéo";
088         fi
089 
090         echo ""
091 
092 }
093 
094 function list_images() {
095 
096         echo "Listes des images";
097         echo ""
098 
099         if [ "`ls -l ${DIR}${IMG} 2>/dev/null |wc -l`" -ge "1" ]; then
100 
101         for i in ${DIR}${IMG}; do
102 
103                 file=`echo $i |cut -d/ -f 5 |
104                 awk -F - '{ date_now=substr($(date),7,2); day=substr($2,7,2); if (date_now != day)
105                 print $1 "-" ""substr($2,1,4) ""substr($2,5,2) ""substr($2,7,2) ""substr($2,9,4) ""substr($2,13,2) "-"$3}'`;
106 
107                 file_year="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr($2,1,4) }'`";
108                 file_month="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr($2,5,2) }'`";
109                 file_day="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr($2,7,2) }'`";
110 
111                 DIR_4_FILE="${DIR}${file_year}/${file_month}/${file_day}/";
112 
113                 echo " - On se prépare à déplacer ${DIR}$file vers ${DIR_4_FILE}$file";
114 
115                 if [ -e ${DIR_4_FILE} ] && [ -d ${DIR_4_FILE} ]; then
116                         echo -e "\tLe répertoire ${DIR_4_FILE} exist !";
117                         echo -e "\t\t+ ${DIR}$file --> ${DIR_4_FILE}$file"
118                         mv ${DIR}$file ${DIR_4_FILE}$file
119                         echo ""
120                 else
121                         echo -e "\tOn crée le répertoire ${DIR_4_FILE}";
122                         mkdir -p ${DIR_4_FILE}
123                         echo -e "\t\t+ ${DIR}$file --> ${DIR_4_FILE}$file"
124                         mv ${DIR}$file ${DIR_4_FILE}$file
125                         echo ""
126                 fi
127         done;
128 
129         else
130                 echo "- Aucune Image";
131         fi
132 
133         echo ""
134 }
135 
136 description_script
137 directory_day
138 list_images
139 list_videos
140 
141 
142 echo "# Fin du script";
143 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

ZW3B Links :

ZW3B Links qui peuvent vous intéresser :


LAB3W.ORJ Alias de O.Romain JAILLET-RAMEY (NOTIF LVL 7 - 42 ans) LAB3W.ORJ
CONTACT
- Web - STEAM - Monster - LinkedIn - Viadeo - DailyMotion - FACEBOOK - GOOGLE+ - Twitter
DROITS SITES : ZW3B.Admin
INSCRIPTION : Le samedi 06 janvier 1 (2001/01/06 15:31)
CONNEXION : hier à 16h21 (2019/08/17 16:21)
DERNIERE VISITE : hier à 18h07 (2019/08/17 18:07)

les réactions des ZW3B.Nautes (0 note)

Ajouter un commentaire

Avatar par default
Pseudo :
Email :
 
Ajouter la chaine de caractères (le code) ci-dessous dans le champ du dessous.
Captcha
Code :





Valid XHTML 1.0 Strict CSS Valide !

ipv6 ready