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 :

Supprimer les 10 plus vieux fichiers d'un dossier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 64
    Par défaut Supprimer les 10 plus vieux fichiers d'un dossier
    Bonjour,
    Sauriez vous quelle commande utiliser pour supprimer les n plus vieux fichier d'un dossier ?
    merci!

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 64
    Par défaut
    Merci pour ta réponse, j'avais bien trouvé cette commande, mais je ne sais pas trop comment l'utiliser.

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Bonjour,

    Find ne permet pas de trier par date, celui-ci sort les fichier dans l'ordre d'apparition sur le filesystem.

    Sinon, ta demande est loin d'être claire, qu'appelles tu les plus vieux fichiers (acces ou changement) ?

    Voila un exemple qui fonctionne pour un seul répertoire et celui-ci ne controle pas le type de fichier que cela peut-être, donc si dans ton répertoire tu peux avoir d'autres répertoires par exemple, il faut la retravailler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stat -c '%y;%n' * | sort -t \; -k1 | head -10 | cut -d \; -f2 | xargs -IXXX echo rm "XXX"
    Ici, il y a un echo pour afficher la commande rm, une fois que la commande te semble ok, suffit de supprimer le echo.

  5. #5
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Une méthode s'appuyant sur find:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find dossier -type f -printf "%T@ %p\n" | sort -n | head | sed 's/[^ ]* //' | xargs -I{} echo rm -i {}

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 64
    Par défaut
    Super, merci, j'ai remplacé echo par sudo, ca marche, cool.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    stat -c '%y;%n' * | sort -t \; -k1 | head -10 | cut -d \; -f2 | xargs -IXXX sudo echo rm "XXX"
    En revanche je souhaite utiliser ce code (sans le sudo) dans un programe C++

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system("stat -c '%y;%n' * | sort -t \; -k1 | head -10 | cut -d \; -f2 | xargs -IXXX rm \"XXX\"");
    j'ai une erreur:
    sort: l'option requiert un argument --t
    sh: -k1 : commande introuvable !!

    Une idée ?

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    Totalement logique. La contre-oblique suivie du point-virgule est interprété par le C++ et remplacée par un point-virgule. Du coup, l'option -t n'a pas d'argument, il proteste et le point virgule finit la commande ce qui veut dire que -k1 est une commande. Et il proteste à nouveau.

    Mets ton point-virgule entre 'simple quotes' plutôt que de l'échapper par la contre-oblique.

  8. #8
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Personnellement, utiliser une batterie de commande linux pour les englober dans du C++, je ne trouve pas ça terrible.
    Surtout qu'il existe des primitives qui permettent de retourner la liste des fichiers ainsi que leur date de modification, après c'est un banal tri sur la date.

Discussions similaires

  1. Supprimer le plus vieux fichier du répertoire
    Par T3rm1nat0r dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 22/02/2013, 20h05
  2. Supprimer les lignes d'un fichier
    Par Wisefool dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 28/02/2011, 09h18
  3. supprimer les 6 plus ancien fichier
    Par popofpopof dans le forum VBScript
    Réponses: 15
    Dernier message: 16/11/2007, 11h05
  4. Supprimer les lignes d'un fichier texte
    Par radhwene dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2007, 11h01
  5. Supprimer les guillemets dans un fichier après écriture
    Par soulryo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 01/03/2005, 11h39

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