Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/07/2016, à 22:02

arno_lupin

[résolu] Bash : trouver les derniers fichiers ou répertoires modifiés

Salut à tous,
Je cherche à savoir si il y a eu une modification sur un dossier et toute son arborescence et, si oui, afficher les dernières modifications.
J'ai creuser la piste de "find -mtime" avec un "head" ou un  "tail" en pipe mais find ne semble pas classer les fichiers et les dossiers de la bonne façon. Il affiche tout un peu en désordre.

Je précise que je ne suis pas tout à fait un nouveau venu de la ligne de commande ou des scripts, mais je suis loin d'être un cador.

Dernière modification par arno_lupin (Le 06/07/2016, à 12:35)


Ubuntu 20.04.1 LTS (Focal Fossa) 64-bit .. MATE 1.24.0

Hors ligne

#2 Le 05/07/2016, à 22:33

pingouinux

Re : [résolu] Bash : trouver les derniers fichiers ou répertoires modifiés

Bonsoir,
Pour voir les fichiers modifiés le plus récemment :

shopt -s globstar
ls -ltd **/*      # Récemment modifiés en tête
ls -lrtd **/*     # Récemment modifiés en queue

Tu peux coupler ces commandes avec head ou tail.

Pour voir aussi les fichiers cachés, remplace la première ligne par :

shopt -s dotglob globstar

Hors ligne

#3 Le 05/07/2016, à 23:42

arno_lupin

Re : [résolu] Bash : trouver les derniers fichiers ou répertoires modifiés

C'est une solution rapide et élégante!
Je suis impressionné, je ne connaissais pas du tout "shopt".
Peux-tu m'en dire plus ? Que sont les variables qu'il gère ? des variables du bash, un peu comme $PWD ?
J'aime bien comprendre... wink

Par contre, il me manque l'option "-mtime" de "find"...
Mon objectif final est de vérifier l'activité sur un dossier et ses multiples sous-dossiers et si il y eu une activité de lancer une sauvegarde périodique.
Et bien sûr, d'afficher cette activité avec le "ls -lrtd"...

Merci beaucoup, je pense que cela va m'être très utile.


Ubuntu 20.04.1 LTS (Focal Fossa) 64-bit .. MATE 1.24.0

Hors ligne

#4 Le 06/07/2016, à 02:10

arno_lupin

Re : [résolu] Bash : trouver les derniers fichiers ou répertoires modifiés

Je pourrais certainement faire un truc du genre :

varTest=$(find ~/monRépertoire/ -mmin -1441 | head -1 )  # 1441 min c'est un jour + 1 min

if [ "$varTest" != "" ]; then
  shopt -s globstar
  ls -ltd **/* | head -20
  shopt -u globstar # pour tout remettre par défaut
     ...
        LANCER MA SAUVEGARDE
     ...
fi

mais je trouve que ma variable  "$varTest" est vraiment bizarre. Je lance une commande qui peux lister un nombre énorme de fichiers pour l'utiliser comme booléen.
... ça me crispe un peu... hmm

Quelqu'un a mieux ?


Ubuntu 20.04.1 LTS (Focal Fossa) 64-bit .. MATE 1.24.0

Hors ligne

#5 Le 06/07/2016, à 06:30

pingouinux

Re : [résolu] Bash : trouver les derniers fichiers ou répertoires modifiés

arno_lupin #3 a écrit :

Peux-tu m'en dire plus ? Que sont les variables qu'il gère ? des variables du bash, un peu comme $PWD ?

shopt est une "builtin command" de bash.
Voir man bash -> SHELL BUILTIN COMMANDS -> shopt.
Pour avoir la list des variables gérées et leur valeur :

shopt                      # Pour l'ensemble des variables
shopt dotglob globstar     # Pour des variables particulières
arno_lupin #4 a écrit :
  shopt -s globstar
  ls -ltd **/* | head -20
  shopt -u globstar # pour tout remettre par défaut

Pour revenir à l'ancienne valeur, il faut l'avoir sauvegardée, car ce n'est pas forcément off :

# Pour la sauvegarde
globstar_old=$(shopt globstar|awk '{if($2=="on")print "-s";else print "-u"}')
........................................................................
#Pour restaurer la valeur
shopt $globstar_old globstar

Tu peux te contenter de faire

if [ "$varTest" ]; then

Édité :
Tu peux aussi faire ainsi :

varTest=$(find ~/monRépertoire/ -mmin -1441 | wc -l)
if [ "$varTest" != "0" ]; then

Dernière modification par pingouinux (Le 06/07/2016, à 07:23)

Hors ligne

#6 Le 06/07/2016, à 12:34

arno_lupin

Re : [résolu] Bash : trouver les derniers fichiers ou répertoires modifiés

Merci beaucoup pingouinux !

Tu réponds parfaitement à mes questions.
Je vais me pencher sur "shopt", c'est très intéressant de pouvoir manipuler le comportement du bash.

Je marque ce sujet comme [résolu].


Ubuntu 20.04.1 LTS (Focal Fossa) 64-bit .. MATE 1.24.0

Hors ligne