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 fichiers les plus anciens


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Homme Profil pro
    Employé magasin
    Inscrit en
    Août 2012
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 194
    Points : 45
    Points
    45
    Par défaut Supprimer les fichiers les plus anciens
    Bonjours,
    Avec dropbox je récupère un fichier comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     > Listing "/file"... DONE
     [F] 80403323  timelapse_2017-03-13.mp4
     [F] 99122724  timelapse_2017-03-14.mp4
     [F] 99180520  timelapse_2017-03-15.mp4
     [F] 112709424 timelapse_2017-03-16.mp4
     [F] 124944703 timelapse_2017-03-17.mp4
     [F] 292493690 timelapse_2017-03-18.mp4
     [F] 107236689 timelapse_2017-03-19.mp4
     [F] 133194778 timelapse_2017-03-20.mp4
     [F] 96540143  timelapse_2017-03-21.mp4
     [F] 115569667 timelapse_2017-03-22.mp4
     [F] 96590340  timelapse_2017-03-23.mp4
     [F] 129278447 timelapse_2017-03-24.mp4
     [F] 60008843  timelapse_2017-03-25.mp4
     [F] 93706555  timelapse_2017-03-27.mp4
     [F] 158942109 timelapse_2017-03-29.mp4
     [F] 102020486 timelapse_2017-03-30.mp4
     [F] 83341070  timelapse_2017-03-31.mp4
     [F] 37175743  timelapse_2017-04-01.mp4
     [F] 93388105  timelapse_2017-04-05.mp4
    J'ai un code pour boucler sur le fichier comme çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    head -n -2 ${FILE} | tail -n -2 | awk '{print $3}' | while read LINE; do
    Mon problème:
    c'est que j'aimerais de façon simple pouvoir boucler sur le fichier et de choisir le nombre de fichier a garder simplement et que suivant le nombre choisit supprimer les fichiers les plus ancien du dossier et je comprends pas comment faire. quoi correspondent les numéro en paramètres ?

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

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

    soit aGarder=12 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ tail -n $(($(wc -l <fichierTest) - (aGarder +1) )) fichierTest | awk '{print $3}'
    timelapse_2017-03-25.mp4
    timelapse_2017-03-27.mp4
    timelapse_2017-03-29.mp4
    timelapse_2017-03-30.mp4
    timelapse_2017-03-31.mp4
    timelapse_2017-04-01.mp4
    timelapse_2017-04-05.mp4
    mais quitte à utiliser awk, autant vraiment utiliser awk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ awk -vtoKeep=$aGarder 'NR>toKeep+1{print $3}' fichierTest 
    timelapse_2017-03-25.mp4
    timelapse_2017-03-27.mp4
    timelapse_2017-03-29.mp4
    timelapse_2017-03-30.mp4
    timelapse_2017-03-31.mp4
    timelapse_2017-04-01.mp4
    timelapse_2017-04-05.mp4
    couplé avec xargs...
    hopla !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre du Club
    Homme Profil pro
    Employé magasin
    Inscrit en
    Août 2012
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 194
    Points : 45
    Points
    45
    Par défaut
    J'ai essayé et ça me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Suppression de timelapse_2017-03-27.mp4 ...
    Suppression de timelapse_2017-03-29.mp4 ...
    Suppression de timelapse_2017-04-01.mp4 ...
    Suppression de timelapse_2017-04-05.mp4 ...
    Alors que dans mon fichier j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     [F] 122812559 timelapse_2017-03-15.mp4
     [F] 109586518 timelapse_2017-03-16.mp4
     [F] 155376445 timelapse_2017-03-18.mp4
     [F] 42880575  timelapse_2017-03-19.mp4
     [F] 142167030 timelapse_2017-03-20.mp4
     [F] 75741770  timelapse_2017-03-21.mp4
     [F] 92672190  timelapse_2017-03-22.mp4
     [F] 50346505  timelapse_2017-03-23.mp4
     [F] 126290279 timelapse_2017-03-24.mp4
     [F] 30421780  timelapse_2017-03-25.mp4
     [F] 63829615  timelapse_2017-03-27.mp4
     [F] 126381439 timelapse_2017-03-29.mp4
     [F] 25168973  timelapse_2017-04-01.mp4
     [F] 48102651  timelapse_2017-04-05.mp4
    Pour le test, j'ai mit à 10, donc ça me sélectionne bien 4 fichiers, car 14 lignes sauf que c'est pas les 4 premiers. Ca ne prend les 4 dernier a la place!!! Pourquoi ?

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Bonjour,

    Normal, le awk de N_BaH affiche les dernières $aGarder ligne du fichier.

    En fait, pour ton besoin, il y a beaucoup plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    head -n -${aGarder} fichierTest | awk '$0=$3'
    le head ici, va lire toutes les lignes de ton fichier sauf les $aGarder dernière, puis le awk te donnera le 3ème champs de chaque ligne.
    Cordialement.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    Citation Envoyé par disedorgue
    le awk de N_BaH affiche les dernières $aGarder ligne du fichier.
    awk n'affiche pas les $aGarder première lignes.
    Citation Envoyé par Lprofessionnelle
    Ca ne prend les 4 dernier a la place!!! Pourquoi ?
    j'ai fourni une démonstration probante.
    as-tu modifié quelque chose à la ligne de commande, hormis le chemin du fichier, et le nombre de lignes aGarder ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    awk n'affiche pas les $aGarder première lignes.
    On est d'accord, je dis bien les $aGarder dernières lignes.

    Après pour le souci du monsieur, je comprends qu'il veut justement les conserver et que c'est les autres qu'il veut supprimer...

    Donc, "my way" , les specs ne sont pas claires
    Cordialement.

  7. #7
    Membre du Club
    Homme Profil pro
    Employé magasin
    Inscrit en
    Août 2012
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 194
    Points : 45
    Points
    45
    Par défaut
    Voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    aGarder=10
    echo "On garde que ${aGarder} video(s) de la caméra ${camera_name}..."
    tail -n $(($(wc -l <${FILE}) - (aGarder +1) )) ${FILE} | awk '{print $3}' | while read LINE; do
        echo "Suppression de ${LINE} ... "	
        # /usr/local/bin/dropbox_uploader delete "./${LINE}"
    done
    C'est quoi qui va pas ?

    EDIT:
    Avec la réponse du #4 qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    head -n -${aGarder} ${FILE} | awk '$0=$3' | while read LINE; do
        echo "Suppression de ${LINE} ... "	
    done
    Ca aurait l'air bon par contre pour eviter une erreur il me reste a savoir le nombre de ligne dans fichier et une petite condition, mais j'ai pas réussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    aGarder=12
    nbligne=$(wc -l < $FILE)
    echo "${aGarder}"
    echo "${nbligne}"
    echo "--"
     
    if ["${aGarder}" < "${nbligne}"] 
    then
            echo "On peut delete"
    else
            echo "On peut pas delete"
    fi
    J'ai le droit à test.sh: ligne 29: 14]: Aucun fichier ou dossier de ce type pourtant les lignes 3 et 4 renvoient bien quelque chose

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    C'est quoi qui va pas ?
    rien !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    $ cat "$fich"
     > Listing /file... DONE
     [F] 80403323  timelapse_2017-03-13.mp4
     [F] 99122724  timelapse_2017-03-14.mp4
     [F] 99180520  timelapse_2017-03-15.mp4
     [F] 112709424 timelapse_2017-03-16.mp4
     [F] 124944703 timelapse_2017-03-17.mp4
     [F] 292493690 timelapse_2017-03-18.mp4
     [F] 107236689 timelapse_2017-03-19.mp4
     [F] 133194778 timelapse_2017-03-20.mp4
     [F] 96540143  timelapse_2017-03-21.mp4
     [F] 115569667 timelapse_2017-03-22.mp4
     [F] 96590340  timelapse_2017-03-23.mp4
     [F] 129278447 timelapse_2017-03-24.mp4
     [F] 60008843  timelapse_2017-03-25.mp4
     [F] 93706555  timelapse_2017-03-27.mp4
     [F] 158942109 timelapse_2017-03-29.mp4
     [F] 102020486 timelapse_2017-03-30.mp4
     [F] 83341070  timelapse_2017-03-31.mp4
     [F] 37175743  timelapse_2017-04-01.mp4
     [F] 93388105  timelapse_2017-04-05.mp4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ tail -n $(($(wc -l <"$fich") - (aGarder +1) )) "$fich" | awk '{print $3}' | while read line; do     echo "Suppression de $line ... "; done
    Suppression de timelapse_2017-03-23.mp4 ... 
    Suppression de timelapse_2017-03-24.mp4 ... 
    Suppression de timelapse_2017-03-25.mp4 ... 
    Suppression de timelapse_2017-03-27.mp4 ... 
    Suppression de timelapse_2017-03-29.mp4 ... 
    Suppression de timelapse_2017-03-30.mp4 ... 
    Suppression de timelapse_2017-03-31.mp4 ... 
    Suppression de timelapse_2017-04-01.mp4 ... 
    Suppression de timelapse_2017-04-05.mp4 ...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Membre du Club
    Homme Profil pro
    Employé magasin
    Inscrit en
    Août 2012
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 194
    Points : 45
    Points
    45
    Par défaut
    Voila c'est parfait maintenant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    head -n -${aGarder} ${FILE} | tail -n +2 | awk '$0=$3' | while read LINE; do
        echo "Suppression de ${LINE} ... "	
    done
    Je crois que c'est parfait

  10. #10
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Tu peux simplifier en virant tail et en traitant la suppression de la première ligne dans awk:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    head -n -${aGarder} ${FILE} | awk 'NR > 1 && $0=$3' | while read LINE; do
        echo "Suppression de ${LINE} ... "	
    done
    Cordialement.

  11. #11
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 125
    Points
    15 125
    Par défaut
    Citation Envoyé par Lprofessionnelle Voir le message
    Voila c'est parfait maintenant:
    [...]
    Je crois que c'est parfait
    Alors, ça l'est où ça ne l'est pas ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    Tu peux simplifier en virant [head] et en traitant [tout] dans awk
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  13. #13
    Membre du Club
    Homme Profil pro
    Employé magasin
    Inscrit en
    Août 2012
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 194
    Points : 45
    Points
    45
    Par défaut
    Je trouve ça plus simple comme ça^^.
    Merci pour votre aide précieuse!!!

  14. #14
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Pourquoi pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -vaGarder=${aGarder} '{line[NR]=$3}END{for(i=2;i<=NR-aGarder;i++){print line[i]}}' fichier
    Cordialement.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    tu compliques à dessein, parce qu'on est vendredi, n'est-ce pas ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  16. #16
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Non,
    Tu as plus simple parce que là, je ne vois pas ?
    Cordialement.

  17. #17
    Membre du Club
    Homme Profil pro
    Employé magasin
    Inscrit en
    Août 2012
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 194
    Points : 45
    Points
    45
    Par défaut
    J'ai une dernière question, pourquoi ce code marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tests = $(head -n 1 ${FILE} | tail -n 1)
    echo "=> ${testss}"
    et m'indique: test.sh: ligne 17: testss : commande introuvable alors que dans la console quand je test: head -n 1 cam.config.txt | tail -n 1, ça fonctionne ?
    Je suis pas très bon dans ce langage comme on peut le voir^^

  18. #18
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 721
    Points
    12 721
    Par défaut
    MAUVAISE SYNTAXE
    BONNE SYNTAXE
    Cordialement.

  19. #19
    Membre du Club
    Homme Profil pro
    Employé magasin
    Inscrit en
    Août 2012
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 194
    Points : 45
    Points
    45
    Par défaut
    Abusé, vraiment abusé, j'aime mieux quand il y a un espace moi^^. Merci pour l'info je dormirais moins bête ce soir. Pour qu'elle raison on a pas le choix de mettre ou non un espace ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    Tu as plus simple parce que là, je ne vois pas ?
    au #2, j'avais donné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -vtoKeep=$aGarder 'NR>toKeep+1{print $3}' fichierTest
    c'est passé inaperçu.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Batch] Supprimer le fichier le plus ancien d'un dossier
    Par Egan69 dans le forum Scripts/Batch
    Réponses: 11
    Dernier message: 27/06/2013, 13h27
  2. 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
  3. Réponses: 4
    Dernier message: 06/08/2008, 14h52
  4. Supprimer le fichier le plus ancien dans un dossier
    Par sweaty dans le forum Delphi
    Réponses: 5
    Dernier message: 25/02/2007, 16h33

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