Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2465 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

   datetime date 1 < date 2 delta? fonction?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

datetime date 1 < date 2 delta? fonction?

n°1470146
thedumies
Posté le 20-11-2021 à 12:09:11  profilanswer
 

Bonjour  
 
Sur mon bureau j'ai plusieurs fichier .TAR exemple : "ABC-1-11-2021.TAR" ; "ABC-7-11-2021.TAR" ; "ABC-15-11-2021.TAR" et ainsi de suite... un scripts qui génère un fichier tout les X jour et bien sûr si l'on y prête pas attention ça pollue le bureau et c'est chiant à retrouvé le fichier le plus récent.  
 
Ce que j'aimerai c'est faire un script qui me conserve uniquement le fichier le plus récent et supprime les autre, dans l'exemple cité ci dessous ça serait : "ABC-15-11-2021.TAR" mais le plus complexe est de faire le script  :pt1cable:  ce qui ne change pas c'est le nom du fichier "ABC" (dans notre exemple) ça sera toujours le même et toujours sur le bureau en revanche la date change  :)  
 
Dans l'idée je pense qu'il faut déjà avoir la date du jour, et ensuite un delta entre ces fichiers et comme je l'ai dit avoir que le plus récent  :)  mais j'ignore comment le faire j'ai regardé pas mal de site mais rien qui ce rapproche vraiment de ce que je souhaite  :sweat:  
 
Merci

mood
Publicité
Posté le 20-11-2021 à 12:09:11  profilanswer
 

n°1470148
kajoux
Posté le 20-11-2021 à 14:39:19  profilanswer
 

Le plus simple, ce serait quand même que le script qui génère les archives n'en génère qu'une avec toujours le même nom, qui écrase donc la précédente, puisque tu ne veux que la dernière.

n°1470151
VisualC++
J'va y penser ...
Posté le 20-11-2021 à 14:57:45  profilanswer
 

à base d'un ls dans un script shell ca peut le faire (la ca garde les 10 fichiers les plus récents)
 

Code :
  1. ls -1tr | head -n -10 | xargs -d '\n' rm -f --

n°1470152
thedumies
Posté le 20-11-2021 à 15:02:32  profilanswer
 

J'ajoute des informations supplémentaire puisque à me relire c'est très flou  :ange:  
 
 
Après réflexion je me suis dit "si j'ai un pépin avec le fichier "récent" j'ai aucun fichier "backup" " du coup j'ai changé d'optique je vais conservé  deux fichier, le plus récent, le précédent et le tout "dernier" poubelle ce qui donne dans mon optique  
 
 - "ABC-15-11-2021.TAR" = fichier récent on conserve.
 
 - "ABC-7-11-2021.TAR"= mon "backup" de secours au cas ou supposons le fichier en vert est totalement inutilisable.
 
 - "ABC-1-11-2021.TAR"= on supprime totalement
 
Ce qui amène à mon code ci-dessous  
 

Code :
  1. jours = time.time() - (9 * 86400)
  2. chemin = 'C:\\USER\Bureau\BCKP'
  3. for i in os.listdir(chemin):
  4.     path = os.path.join(chemin, i)
  5.     if os.stat(path).st_mtime <= jours:
  6.         if os.path.isfile(path):
  7.             try:
  8.                 os.remove(path)
  9.             except:
  10.                 print("Peut pas supprimer le fichier :", i)
  11.         else:
  12.             try:
  13.                 shutil.rmtree(path)
  14.             except:
  15.                 print("Je trouve pas le fichier :", i)


 
J'ai pas ajouté les "import modules" et j'ai testé mais il supprime rien je loupe surement quelque chose je continue mes investigations :D

n°1470154
kajoux
Posté le 20-11-2021 à 15:14:31  profilanswer
 

Ah si ça n'est pas fait en shell, perso, je m'arrête là, désolé.
Le seul truc que je te dirais quand même, si tu peux, c'est que le script qui génère les archives les nomme de manière naturellement triée : "ABC-yyyy-mm-dd.TAR", au lieu de "ABC-dd-mm-yyyy.TAR".
Ça t'évitera déjà un tri inutile.

n°1470170
rat de com​bat
attention rongeur méchant!
Posté le 20-11-2021 à 19:53:40  profilanswer
 

VisualC++ a écrit :

à base d'un ls dans un script shell ca peut le faire (la ca garde les 10 fichiers les plus récents)
 

Code :
  1. ls -1tr | head -n -10 | xargs -d '\n' rm -f --


Les 10 fichiers les plus récents peu importe le type ou le nom non? Du coup avec le rm -f ça me paraît risqué sans vérification préalable. :o  
 
Sinon on est dans la cat Linux mais visisblement c'est pour du Windows ("C:\\" ), donc sujet à déplacer?

n°1470190
TNZ
Ryzen 9 5950X powered ...
Posté le 21-11-2021 à 09:32:04  profilanswer
 

VisualC++ a écrit :

à base d'un ls dans un script shell ca peut le faire (la ca garde les 10 fichiers les plus récents)

 
Code :
  1. ls -1tr | head -n -10 | xargs -d '\n' rm -f --



Par rapport à la demande initiale, j'aurais mis ça :

Code :
  1. ls -1tr *-*-*-???.tar | head -n -2 | xargs -d '\n' rm -f --
 

Ceci dit il aurait mieux valu nommer les fichiers de cette façon :

$(date +%Y%m%d-%Hh%Mm%Ss)-abc.tar


Message édité par TNZ le 25-11-2021 à 10:58:03

---------------
"Mieux vaut demander à un qui sait plutôt qu'à deux qui cherchent." ... "Le plus dur, c'est de faire simple.", TNZ

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

   datetime date 1 < date 2 delta? fonction?

 

Sujets relatifs
À propos de la fonction smart et des résultats (ok)Aide correction scripts fonction choix
Date - additionner des minutesRemplacer date dans nom fichier
Tache cron à une date précise ?Sauvegardes différentes suivant l'heure
Ajouter la date à la création d'un fichier[Résolu] Bash : Récupérer la date de modification d'un fichier
[shell command] rediriger vers un fichier date_noméProblème smtp ou fonction mail avec phpbb
Plus de sujets relatifs à : datetime date 1 < date 2 delta? fonction?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR