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 :

Suppression fichiers sauf le dernier créé


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 87
    Par défaut Suppression fichiers sauf le dernier créé
    Bonjour,

    Je me tourne vers vous puisque je souhaiterais supprimer un ensemble de fichiers du même nom, mais avec des dates différentes au niveau du nom de fichier.

    Exemple : (date du jour 20120918)

    20120904_FICHIER_TEST.txt (date fichier 20120904)
    20120903_FICHIER_TEST.txt (date fichier 20120903)
    20120902_FICHIER_TEST.txt (date fichier 20120902)
    20120901_FICHIER_TEST.txt (date fichier 20120901)

    En gros supprimer tous les fichiers sauf le dernier créé :

    "20120904_FICHIER_TEST.txt".

    J'aurais bien fais comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -mtime +1 -type f -xdev -print -exec rm {} \;
    Mais -mtime se joue en fonction de la date du fichier... Il faudrait pouvoir dire de supprimer les fichiers vieux de x jours mais garder le plus récent.

    Si vous avez une idée, je suis preneur

    Merci d'avance

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour,

    avec find je ne vois pas mais je n'ai fait des tests qu'avec des fichiers allant jusqu'à la fin de l'année.

    en bash:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/bash
     
    shopt -s extglob nullglob
    for f in ./*
    do
       actual=( $(stat -c'%Y %n' "$f") )
       test -z "$latest" && { latest=( ${actual[0]} "${actual[*]:1}" ); continue;}
       test ${actual[0]} -gt ${latest[0]} && latest=( ${actual[0]} "${actual[*]:1}" )
    done
    last="${latest[*]:1}"
    printf 'rm %s\n' !(${last##*/}) #cette dernière commande est à remplacer par rm si le résultat convient
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    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 rm
    je te propose ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ls -t1 *FICHIER* | awk ' FNR > 1 {  print $0 ;  }' | xargs rm

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 87
    Par défaut
    Merci pour vos réponses, je vais étudier tout ça, la solution en awk me parait plus simple.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    oui, d'ailleurs on peut coupler :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    shopt -s extglob
    rm !("$(ls -t1 | awk 'FNR==1')")
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Invité de passage
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Novembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 1
    Par défaut
    Bonjour,
    vous pouvez faire la commande suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -c1 | tail -n +2 | xargs rm -rv

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

Discussions similaires

  1. [PHP 4] suppression de fichier sauf ceux d'aujourdhui
    Par pitoumad dans le forum Langage
    Réponses: 5
    Dernier message: 30/07/2010, 16h31
  2. Suppression fichier
    Par lili_bzh dans le forum Linux
    Réponses: 13
    Dernier message: 08/02/2006, 12h39
  3. Suppression du 1er et dernier caractere
    Par ekinoxe dans le forum ASP
    Réponses: 4
    Dernier message: 01/02/2006, 15h44
  4. [VB NET 2005] Suppression Fichier
    Par metallicox dans le forum Windows Forms
    Réponses: 6
    Dernier message: 23/11/2005, 15h11
  5. [C#] [FTP] Envoi et suppression fichier sur ftp NON ANONYME!
    Par djsbens dans le forum Windows Forms
    Réponses: 14
    Dernier message: 30/03/2005, 10h20

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