# Script bash permettant de voir si un dossier est à la date du jour et qui affiche OK

**URL:** <https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650>\
**Category:** Programmation\
**Created:** [Décembre 29, 2020, 2:19 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650 "2020-12-29T14:19:35Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![amazigh06](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/35a633/32.png) [@amazigh06](https://www.debian-fr.org/u/amazigh06)\
**Post date:** [Décembre 29, 2020, 2:19 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/1 "2020-12-29T14:19:35Z")

</div>

bonjour  
j’aimerai un script bash qui check la date du jour d’un dossier repertoire01 et qui envoit OK si la date du jour correspond/

drwxr-x—. 2 apache apache 1904640 29 déc. 15:08 repertoire01

j’ai aucune connaissance en bash du coup si vous pouvez m’aider pour des pistes merci

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Décembre 29, 2020, 4:17 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/2 "2020-12-29T16:17:42Z")

</div>

Bonjour,  
C’est la date de dernière modification que tu veux?  
Car il y a trois date il me semble:  
ctime, atime et mtime: création, accès et modification.  
Mais tu peux utiliser la fonction stat :

```auto
# stat /home
  Fichier : /home
   Taille : 4096 Blocs : 8 Blocs d'E/S : 4096 répertoire
Périphérique : fe02h/65026d Inœud : 2 Liens : 5
Accès : (0755/drwxr-xr-x) UID : ( 0/ root) GID : ( 0/ root)
 Accès : 2020-12-29 07:39:36.299181138 +0100
Modif. : 2020-11-05 12:50:00.636712432 +0100
Changt : 2020-11-05 12:50:00.636712432 +0100
  Créé : -

```

En utilisant l’option -c / --format= ou --printf=  
Pour atime:

```auto
#stat --format='%x'
2020-12-29 07:39:36.299181138 +0100

```

`man stat` pour avoir toutes les options de format

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Décembre 29, 2020, 4:30 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/3 "2020-12-29T16:30:52Z")

</div>

un exemple:

```auto
#!/bin/bash
file=$1
FNAME=`echo $0"[$file]"`
if [[-z $file]] || [["$file" = ""]]; then
        echo "$FNAME: Error: prefix parameter not set."
        exit 1
fi
if [[! -f $file]]; then
        echo "$FNAME: Error: fil $file doesn't exist."
        exit 1
fi
ACTUALDATE=`date +%Y-%m-%d-%H:%M:%S`
FILEDATE=`stat --format='%x' $file| grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}'`

if [["$ACTUALDATE" = "$FILEDATE"]]; then
    echo "Date is OK"
fi

```

---

<div class="post-metadata">

**Author:** ![amazigh06](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/35a633/32.png) [@amazigh06](https://www.debian-fr.org/u/amazigh06)\
**Post date:** [Décembre 29, 2020, 7:12 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/4 "2020-12-29T19:12:25Z")

</div>

merci bcp pour ton retour  
je souhaite la date de modification du dossier( le but cest juste de savoir si je recois bien des données chaque jour dans de ce dossier si cest pas le cas cest dc que le dossier ne se met pas à jour ds la journee cest qu il n y a pas eu de depot… le but est de mettre une alerte zabbix ou autre par la suite pour m alerter)  
=\> cest qu au final un hyperviseur zabbix ou autre lance le script affiche ok si datedujour=date dossier (juste le jour pas besoin de lheure) et nok sinon

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Décembre 29, 2020, 7:47 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/5 "2020-12-29T19:47:02Z")

</div>

tes fichiers viennent d’où? quel genre de fichiers est-ce? est-ce une synchro d’une source quelconque? ou des fichiers déposés par exemple par des utilisateurs?  
As tu un traitement sur ces fichiers?

une autre solution peux aussi consister à faire un checksum sur les ficheirs et de faire un diff entre le checksum precedent et le checksum courant, et ca te donne la liste des nouveaux fichiers, s’il n’y en a pas c’est que tu n’as pas eu de nouveaux fichiers.

Tu peux faire le fichier avec:

```auto
find -follow -type f ! -name md5sum.txt -print0 | xargs -0 md5sum > md5sum.txt

```

Quand tu as comparé ton fichier avec l’ancien, tu efface l’ancien, et change le nom du dernier.

---

<div class="post-metadata">

**Author:** ![amazigh06](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/35a633/32.png) [@amazigh06](https://www.debian-fr.org/u/amazigh06)\
**Post date:** [Décembre 29, 2020, 8:17 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/6 "2020-12-29T20:17:53Z")

</div>

ca provient dun fournisseur externe via ftp ce sont des fichiers qui arrivent chaque jour ( pas besoin detre hyper precis sur le nombre de fichier) simplemnt sassurer qu il y a eu d depot chaque jour ( lancer le script simplement une a 2 fois par jour) pr voir si la date de modification.correspond à la date du jour.

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Décembre 29, 2020, 8:28 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/7 "2020-12-29T20:28:48Z")

</div>

C’est le(s) même(s) fichier tous les jours (même nom?)?  
car sinon c est facile, tu fait une liste des fichiers à minuit, tu la compare à celui du jour précédent.  
Le résultat te donne les ficheirs reçus.  
si les noms sont identiques, alors le checksum fera l’affaire, car le même fichier avec des contenu différent ou simplement une date différente aura un checksum différent.  
Ensuite suffit de comparer le contenu des checksum. C’est plus simple et nettement plus rapide que de faire un script avec les dates etc… Juste quelques commandes à faire.

---

<div class="post-metadata">

**Author:** ![amazigh06](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/35a633/32.png) [@amazigh06](https://www.debian-fr.org/u/amazigh06)\
**Post date:** [Décembre 30, 2020, 7:34 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/8 "2020-12-30T07:34:35Z")

</div>

bonjour  
justement je ne veux pas la liste des fichiers reçu, je veux juste savoir si le dossier a modifié sa date du jour… le but cest juste denvoyer un ok ou ko à un hyperviseur de supervision, l hyperviseur peut lancer le script sur la machine et recuperer ce ok ou ko pr lafficher

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Décembre 30, 2020, 8:35 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/9 "2020-12-30T08:35:33Z")

</div>

Bonjour

La dernière modification du répertoire **`~/repTest/`** a été faite le 29 décembre à 03:21  
quand le fichier **`~/repTest/fichier.txt`** y a été créé :

```nohighlight
michel@ubuT450:~$ ls -la ~/repTest/
total 8
drwxrwxr-x 2 michel michel 4096 déc. 29 03:21 .
drwxr-xr-x 20 michel michel 4096 déc. 30 09:02 ..
-rw-rw-r-- 1 michel michel 0 déc. 29 03:21 fichier.txt
michel@ubuT450:~$ 

```

Je créé une variable qui contient la date/heure d’il y a un jour  
et une autre qui contiendra la date/heure de dernière modification du répertoire **`~/repTest/`**

```nohighlight
michel@ubuT450:~$ ilYa24heures=$(date -d '-1 day' '+%s')
michel@ubuT450:~$ dernModif=$(stat --format='%Y' ~/repTest/)
michel@ubuT450:~$ 

```

Je compare les valeurs des variables  
pour savoir si le fichier a été modifié ces dernières 24 heures

```nohighlight
michel@ubuT450:~$ [$dernModif -gt $ilYa24heures] && echo "Ok" || echo "Ko"
Ko
michel@ubuT450:~$ 

```

Je créé un fichier dans le répertoire :

```nohighlight
michel@ubuT450:~$ touch ~/repTest/fichierTest.txt
michel@ubuT450:~$ 

```

Je mets à jour les variables et je les compare :

```nohighlight
michel@ubuT450:~$ dernModif=$(stat --format='%Y' ~/repTest/)
michel@ubuT450:~$ ilYa24heures=$(date -d '-1 day' '+%s')
michel@ubuT450:~$ [$dernModif -gt $ilYa24heures] && echo "Ok " || echo "Ko"
Ok 
michel@ubuT450:~$ 

```

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Décembre 30, 2020, 9:08 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/10 "2020-12-30T09:08:29Z")

</div>

simplement précis. simplement écris ! 😛 😃

---

<div class="post-metadata">

**Author:** ![amazigh06](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/35a633/32.png) [@amazigh06](https://www.debian-fr.org/u/amazigh06)\
**Post date:** [Décembre 30, 2020, 9:14 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/11 "2020-12-30T09:14:01Z")

</div>

je suis totalement novice en script… dsl  
du coup je commence par #!bin/bash  
puis je note toutes tes commandes à la fin j’ai soit Ok ou Ko en resultat

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Décembre 30, 2020, 9:27 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/12 "2020-12-30T09:27:51Z")

</div>

Toutes ces lignes, c’était juste pour décrire un peu le fonctionnement,  
sinon, en une ligne, ça donnerait simplement :

```nohighlight
[$(stat --format='%Y' /chemin/repertoire01/) -gt $(date -d '-1 day' '+%s')] && echo "Ok" || echo "Ko"

```

ce qui affichera : **Ok** si **repertoire01** a été modifié ces dernières 24 heures  
et qui affichera : **Ko** si **repertoire01** n’a pas été modifié durant ces dernières 24 heures

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Décembre 31, 2020, 9:54 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/13 "2020-12-31T09:54:27Z")

</div>

> [@amazigh06](#):
>
> … du coup je commence par #!bin/bash …

Je n’avais pas fait attention,  
mais tu as sans doute fait une petite erreur de frappe,  
car la première ligne d’un script que l’on voudrait voir être interprété par **`bash`**  
devrait plutôt être :

```plaintext
#!/bin/bash

```

* * *

Pour info, dans un script,  
cette première ligne est nommée [shebang](https://fr.wikipedia.org/wiki/Shebang)

---

<div class="post-metadata">

**Author:** ![amazigh06](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/35a633/32.png) [@amazigh06](https://www.debian-fr.org/u/amazigh06)\
**Post date:** [Décembre 31, 2020, 10:02 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/14 "2020-12-31T10:02:00Z")

</div>

bonjour  
merci bcp effectivement j’avais pas vu le /  
je le test aujourd’hui

---

<div class="post-metadata">

**Author:** ![amazigh06](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/35a633/32.png) [@amazigh06](https://www.debian-fr.org/u/amazigh06)\
**Post date:** [Janvier 5, 2021, 9:00 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/15 "2021-01-05T09:00:54Z")

</div>

> [@anon29980398](#):
>
> Je créé une variable qui contient la date/heure d’il y a un jour  
> et une autre qui contiendra la date/heure de dernière modification du répertoire **`~/repTest/`**
> 
> ```auto
> michel@ubuT450:~$ ilYa24heures=$(date -d '-1 day' '+%s')
> michel@ubuT450:~$ dernModif=$(stat --format='%Y' ~/repTest/)
> michel@ubuT450:~$ 
> 
> ```
> 
> Je compare les valeurs des variables  
> pour savoir si le fichier a été modifié ces dernières 24 heures
> 
> ```auto
> michel@ubuT450:~$ [$dernModif -gt $ilYa24heures] && echo "Ok" || echo "Ko"
> Ko
> 
> ```

merci ça marche tres bien!  
juste pour ma compréhension tu dis que tu compare les 2 valeurs «&nbsp;derniere modif&nbsp;» et «&nbsp;dateilya24h&nbsp;»  
pourquoi ‹&nbsp;%Y&nbsp;› qui correspond à l’année? et non pas le temps ‹&nbsp;+%s&nbsp;›= temps UTC depuis 1970… comme dans ta variable il y a 24H?  
lorsque tu compares avec le ‹&nbsp;-gt&nbsp;› veut dire quoi si les 2 valeurs sont différentes alors fichier bien modifié? si temps \>0 alors il y a eu modification?  
merci de ton aide

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Janvier 5, 2021, 9:18 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/16 "2021-01-05T09:18:13Z")

</div>

Bonjour

> [@amazigh06](#):
>
> … pourquoi ‹ %Y › qui correspond à l’année? …

Tu as confondu les options de la commande **`date`** et de la commande **`stat`**

Extrait de la sortie de la ligne de commande :

```plaintext
man stat

```

> ```
> …
> %Y time of last data modification, seconds since Epoch
> …
> 
> ```

* * *

> [@amazigh06](#):
>
> … ‹ -gt › veut dire quoi …

**g** reater **t** han

Extrait de la sortie de la ligne de commande :

```plaintext
man test

```

> ```
> …
> INTEGER1 -gt INTEGER2
> INTEGER1 is greater than INTEGER2
> …
> 
> ```

---

<div class="post-metadata">

**Author:** ![amazigh06](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/35a633/32.png) [@amazigh06](https://www.debian-fr.org/u/amazigh06)\
**Post date:** [Janvier 5, 2021, 11:07 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/17 "2021-01-05T11:07:13Z")

</div>

merci bcp ! c’est bcp plus clair

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Janvier 5, 2021, 11:37 UTC](https://www.debian-fr.org/t/script-bash-permettant-de-voir-si-un-dossier-est-a-la-date-du-jour-et-qui-affiche-ok/83650/18 "2021-01-05T11:37:03Z")

</div>

Pour info, la commande **`[`**  
est équivalente à la commande **`test`**  
comme on peut le voir en faisant :

```nohighlight
man [

```

dont le retour est le même que :

```nohighlight
man test

```
