IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script de nettoyage de répertoire par date


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 83
    Points : 58
    Points
    58
    Par défaut Script de nettoyage de répertoire par date
    Bonjour,

    Je suis entrain de me faire un script de nettoyage de répertoire vieux de x jours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/sh
     
    if [ "$#" -ne 1 ] ; then
            echo "Usage : $0 number_of_day"
            exit 1
    fi
     
    dir="/home/ediff/test"
     
    cmd_find=$(which find)
    cmd_rm=$(which rm)
     
    $cmd_find $dir -type d -mtime +$1 -exec $cmd_rm -Rf \{\} \;
    => Le script prend le nombre de jours en paramètre et à l’exécution les fichiers vieux de x jours sont supprimés mais il m'affiche des messages comme ceci :
    /usr/bin/find: "/home/ediff/test/tmpyHJUy5MWFt": Aucun fichier ou dossier de ce type
    /usr/bin/find: "/home/ediff/test/tmp6kkmX7QV0B": Aucun fichier ou dossier de ce type
    /usr/bin/find: "/home/ediff/test/tmpmiOzKU6ygw": Aucun fichier ou dossier de ce type
    /usr/bin/find: "/home/ediff/test/tmpDtvqWUT279": Aucun fichier ou dossier de ce type
    => SVP qu'est-ce qui ne va pas dans mon script?

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    Citation Envoyé par rin01 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /usr/bin/find: "/home/ediff/test/tmpyHJUy5MWFt": Aucun fichier ou dossier de ce type
    /usr/bin/find: "/home/ediff/test/tmp6kkmX7QV0B": Aucun fichier ou dossier de ce type
    /usr/bin/find: "/home/ediff/test/tmpmiOzKU6ygw": Aucun fichier ou dossier de ce type
    /usr/bin/find: "/home/ediff/test/tmpDtvqWUT279": Aucun fichier ou dossier de ce type
    => SVP qu'est-ce qui ne va pas dans mon script?
    je pense que find a du renvoyer quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /home/ediff/test
    /home/ediff/test/tmpyHJUy5MWFt
    /home/ediff/test/tmp6kkmX7QV0B
    (...)
    du coup dans l'ordre rm -Rf /home/ediff/test, les sous-répertoires qui venaient ensuite dans la liste n'existent déjà plus

    au plus simple il suffira de rajouter un 2>/dev/null derrière le find

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 83
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    salut,


    je pense que find a du renvoyer quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /home/ediff/test
    /home/ediff/test/tmpyHJUy5MWFt
    /home/ediff/test/tmp6kkmX7QV0B
    (...)
    du coup dans l'ordre rm -Rf /home/ediff/test, les sous-répertoires qui venaient ensuite dans la liste n'existent déjà plus

    au plus simple il suffira de rajouter un 2>/dev/null derrière le find
    Merci, j'y ai pensé justement mais je ne comprends pas pourquoi find renverrai en premier ?

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 382
    Points
    19 382
    Par défaut
    Bonjour,

    ajoute l'option -depth, pour [t]raiter d'abord les sous-répertoires avant le répertoire lui-même.

    une petite remarque sans rapport avec le sujet :
    si une commande n'est pas dans le PATH de l'utilisateur qui lance le script, which ne trouvera pas le chemin de la commande.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 83
    Points : 58
    Points
    58
    Par défaut
    OK merci à vous 2, avec l'option je n'ai plus d'erreur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trier un répertoire par date de modification
    Par mathias59 dans le forum Langage
    Réponses: 2
    Dernier message: 18/06/2010, 00h00
  2. Réponses: 5
    Dernier message: 10/05/2010, 11h46
  3. Trier les fichiers d'un répertoire par date
    Par rouliane dans le forum Général Python
    Réponses: 7
    Dernier message: 02/08/2009, 17h26
  4. [Batch] Supprimer un répertoire par date.
    Par Jose.N70 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 03/06/2009, 13h12
  5. Classement des fichiers d'un répertoire par date
    Par lunick dans le forum Langage
    Réponses: 1
    Dernier message: 16/06/2008, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo