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 POSIX Discussion :

Commande de suppression sélective


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    consultant ETL
    Inscrit en
    Septembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant ETL
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2008
    Messages : 97
    Par défaut Commande de suppression sélective
    Bonjour,

    Je souhaite supprimer les fichiers plus vieux de 15 jours sauf ceux créés un dimanche.
    Auriez vous une commande plus sexy que celle que j'ai pondue ci dessous.
    Mon principe :
    utiliser --time-style="+%u" pour connaitre le jour de la semaine
    dépolluer un peu les champs inutiles
    filtrer sur ce jour de semaine

    Je mets ici des retours à la ligne après les pipes juste pour la lisibilité.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    find . -type f -mtime +15 | 
    xargs ls -o --time-style="+%u"| 
    sed --posix 's/^\([[:punct:][:alnum:]]* \)\{4\}//'| 
    grep '^[1-6]' | 
    cut -f2 -d ' ' |
    xargs rm
    merci pour vos idées.

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    quelle que soit la méthode utilisée, tu es effectivement obligé de scripter la solution puisque la selection se fait en mode "sauf <condition>"....

    un ET logique, un OU, logique, un OUexclusif logique, ça c'est en général (mais pas tjrs) faisable en une commande, mais pas un SAUF....

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 354
    Par défaut
    Bonjour,

    date +%w donne le n° du jour de la semaine avec 0 pour dimanche
    Donc en récupérant cette valeur tu devrais pouvoir ajuster ton find avec plusieurs condition sur le mtime.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Citation Envoyé par disedorgue Voir le message
    date +%w donne le n° du jour de la semaine avec 0 pour dimanche
    La commande "find" possède aussi cette directive avec l'option "-printf" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f -mtime +15 -printf "%p %Aw\n" | egrep '0$
    Sous réserve que ta version de find possède cette option

    Extrait du man find :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                  %Ak    Date  du dernier accès au fichier, dans le format spécifié par k, qui doit
                         être soit un « @ », soit une directive pour la  fonction  C  « strftime ».
                         Les   valeurs   possibles   de  k  sont  indiquées  ci-dessous,  certaines
                         d'entre-elles ne sont pas disponibles sur tous les systèmes, à  cause  des
                         différences entre les fonctions « strftime » existantes.

  5. #5
    Membre éprouvé
    Homme Profil pro
    consultant ETL
    Inscrit en
    Septembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant ETL
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2008
    Messages : 97
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    La commande "find" possède aussi cette directive avec l'option "-printf" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f -mtime +15 -printf "%p %Aw\n" | egrep '0$
    Sous réserve que ta version de find possède cette option
    [/code]
    Super, merci, parfait, ca marche chez moi!

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

Discussions similaires

  1. Commande de suppression de texte
    Par Invité dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 28/11/2012, 12h45
  2. commande de suppression de dossier plein
    Par asmoune dans le forum Windows
    Réponses: 3
    Dernier message: 31/07/2008, 16h12
  3. la commande de suppression
    Par sabrina6 dans le forum Administration système
    Réponses: 4
    Dernier message: 20/03/2008, 13h13
  4. [Batch] Suppression sélective de fichiers
    Par fdesign dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 26/01/2008, 16h20
  5. Script pour créer une commande de suppression de fichiers
    Par romain.1105 dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 10/12/2006, 02h28

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