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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Calcul du volume de certains sous-dossiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Calcul du volume de certains sous-dossiers

n°2325972
bobbyfrasi​er
Well, hello there !
Posté le 11-12-2018 à 11:33:39  profilanswer
 

Hello
 
Je suis à la recherche d'un script pour calculer l'espace disque pris par certains sous-dossiers.
En gros, la structure est la suivante :
_ dossier courant
\_sous-dossier 1
 \_2018-12-10 (il y a des sous-dossiers et fichiers dans ces dossiers)
 \_2018-12-09
 \_2018-12-08
 \_...
\_sous-dossier 2
 \_2018-12-10
 \_2018-12-09
 \_2018-12-08
 \_...
\_...
 
Et il faut que je trouve la taille globale de tous les dossiers datant d'avant une date que je peux paramétrer :o
Est-ce que quelqu'un aurait une idée de script pour faire ça proprement et de façon à peu près optimisée ? Le dossier courant faisant 800 Go avec de nombreux petits fichiers dedans, ça risque de prendre du temps... :o
 
Merci d'avance :)


---------------
Bobbyfrasier, Bobbyfrasier everywhere ! (Steam, Origin, ...)
mood
Publicité
Posté le 11-12-2018 à 11:33:39  profilanswer
 

n°2325984
rat de com​bat
attention rongeur méchant!
Posté le 11-12-2018 à 16:16:26  profilanswer
 

Je suppose que tu veux du batch (donc Windows)? Regarde si la commande dir peut faire ce que tu veux (tapper dir /? en ligne de commande). Par contre 800Go c'est pas mal, vitesse à voir...

n°2325993
bobbyfrasi​er
Well, hello there !
Posté le 11-12-2018 à 19:49:44  profilanswer
 

Nop je souhaiterais faire ça sous unix ;)
Mais comme j'y connais pas grand chose en scripts comme ça, je préfère demander !


---------------
Bobbyfrasier, Bobbyfrasier everywhere ! (Steam, Origin, ...)
n°2326000
rat de com​bat
attention rongeur méchant!
Posté le 11-12-2018 à 21:48:34  profilanswer
 

Alors un truc avec find et ls?

n°2326029
korial
Posté le 12-12-2018 à 08:17:06  profilanswer
 

Je suis pas expert mais je sais que « du -h -d 1 . » perte de calculer la taille des dossiers présent dans le répertoire courant (« . »)
Et pour voir plus en profondeur, passer de 1 à 2,3,etc.  
 
Tu pourrais faire ça et filtrer les résultats après (pas très efficace), ou bien lister d’abord les répertoires, filtrer les dates, avant de faire des commandes « du ».  
 
Si tu connais pas trop le bash peut être que tu connais un peu le python, pourquoi pas essayer de le faire en python ?

n°2326031
bobbyfrasi​er
Well, hello there !
Posté le 12-12-2018 à 09:33:16  profilanswer
 

Thx pour les idées !
En python ça serait évidemment plus facile (voire même en matlab même si c'est moche, mais au moins je connais bien le langage :o )... Sauf que ce n'est pas dispo sur la machine en question et que je ne peux pas l'installer :(
Bon, un collègue a fait un truc à coup de "find" et de "du" mais en mode bruteforce avec plusieurs critères sur le find. Ca marche moyen et c'est ultra long mais ça permet de faire une partie de ce qu'on cherchait.
 
Si vous avez d'autres idées, je reste preneur :)


---------------
Bobbyfrasier, Bobbyfrasier everywhere ! (Steam, Origin, ...)
n°2326842
Demodulate​ur
54 68 65 20 47 61 6d 65
Posté le 27-12-2018 à 05:04:33  profilanswer
 

le problème d'une command à base de find -exec du {}, c'est que tu vas recalculer la taille de tous les sous-dossiers (si t'es en extX, me semble le fs ne garde pas d'infos sur la taille d'un dossier, juste sur celles d'un fichier, donc du parcours toute l'arbo de chaque dossier pour calculer sa taille, sans memoïsation puisqu'il est appelé indépendamment sur chaque dossier par le find).
Une commande qui fait le du d'abord sera sûrement plus rapide (j'ose espérer que du fait de la memoization en interne. Je pense que oui puisqu'il printe d'abord les dossiers les plus profonds puis remonte)

 
Code :
  1. limitdate = $(date -d "2019-01-30 01:56" +%s)
  2. du -h --time --time-style=+%s . | while read line; do if [[ $(cut -f2 <<< "$line" ) -ge "$limitdate" ]]; then echo "$line"; fi; done
 

En gros, du imprime la taille de tous les sous-dossier (mais pas les fichiers, pour ça il faudrait mettre "-ha" au lieu de "-h" ) et leur timestamp de modification, puis on pipe ça dans un filtre qui compare au timestamp d'une date limite donnée.
La flemme de faire des tests, mais ça m'intéresse de savoir si ça va plus vite sur ton problème.


Message édité par Demodulateur le 27-12-2018 à 05:10:54

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Calcul du volume de certains sous-dossiers

 

Sujets relatifs
C++ calcul d'un nombre prmier[RESOLU]Excel calcul des jours de garde
Compte rendu DareBoost, calcul performance de mon site webcalcul de checksum (réglé)
Calcul durée entre 2 dates et heuresCalcul points de plusieurs events et membres
Formulaire Calcul HTML Javascript Help!Masquer certains mots, possible?
Python tkinter quizz calcul mentaldns-pretech sur certains navigateurs
Plus de sujets relatifs à : Calcul du volume de certains sous-dossiers


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