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 le plus vieux fichier du répertoire


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2007
    Messages : 93
    Par défaut Supprimer le plus vieux fichier du répertoire
    Bonjour à tous,
    J'essaie de trouver une commande me permettant de supprimer le fichier le plus vieux d'un dossier (c'est du backup donc que ce soit création ou dernière modification c'est pareil )...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /monDossier -type f -mtime +N -exec /bin/rm -f {} \;
    Me permet de supprimer les fichiers de plus de N jours

    J'ai également trouvé
    Qui me permet de trouver le fichier le plus vieux (tri par date de création, puis affichage du premier)

    Malheureusement, je n'arrive pas à trouver la commande pour faire ce que je souhaite...
    (il me la faudrait sur une seule ligne pour une raison particulière...)

    Pouvez-vous m'aider?
    D'avance merci !

  2. #2
    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,

    rm -f $(ls -1t | tail -1) peut être ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2007
    Messages : 93
    Par défaut
    Il me met "Illegal variable name"

    Mais je viens de trouver la solution !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (ls -1t | tail -1) | xargs rm
    Merci quand même pour ton aide

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Quelque chose comme ceci devrait faire l'affaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for rep in $(  find PATH -type d ! -empty    ) ;
      do   rm $(  basename $( stat -c '%Y/%n'  $rep/*  | sort -n | head -1 )) ; done

  5. #5
    Invité
    Invité(e)
    Par défaut
    Dans un script j'utilise le fichier le plus récent donc ça revient un peu au même.
    En adaptant le code pour toi cela donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rm `ls -t $repertoire/$fichier* | tail -1`
    Par contre il faudrait être sûr de ne pas avoir d'espace dans le nom du répertoire ou des fichiers et qu'il y a bien des fichiers à supprimer.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2007
    Messages : 93
    Par défaut
    @becket
    Merci bien, pour mon utilisation, je ne peux pas, mais c'est toujours bon à prendre

    (je suis en fait en train de créer un script powershell et à un moment je dois récupérer le résultat d'une commande sur mon freenas via ssh, impossible de lancer plusieurs lignes donc)

    @ Beginner.j
    Ahh c'est cool ça !
    C'est avec les " ` " que tu peux faire une "variable" ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par T3rm1nat0r Voir le message
    @becket
    Merci bien, pour mon utilisation, je ne peux pas, mais c'est toujours bon à prendre

    (je suis en fait en train de créer un script powershell et à un moment je dois récupérer le résultat d'une commande sur mon freenas via ssh, impossible de lancer plusieurs lignes donc)

    @ Beginner.j
    Ahh c'est cool ça !
    C'est avec les " ` " que tu peux faire une "variable" ?
    Tout ce qu'il y a entre les "`" est remplacé par le résultat de la commande.
    Si tu veux une variable tu peux faire comme ça (c'est ce que j'utilise mais avec le fichier le plus récent)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_fichier=`ls -t $repertoire/$fichier* | tail -1`

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

    Une solution que j'avais donné ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f -printf '%C@/%p\n' | sort -n | head -n 1 | cut -d\/ -f2- | xargs rm -f
    Cordialement.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/11/2013, 16h44
  2. [Batch] supprimer les fichiers plus vieux que 10 jours
    Par big1 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 11/09/2012, 10h50
  3. [MySQL] Supprimer si plus vieux d'un mois
    Par MRJBGO dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 21/02/2012, 20h31
  4. Supprimer les fichiers Excel plus vieux que 7 jours
    Par jeje00 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/07/2009, 20h05
  5. [cmd]Supprimer les fichiers plus vieux que 5jrs ?
    Par byloute dans le forum Windows XP
    Réponses: 1
    Dernier message: 01/02/2007, 10h18

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