Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/09/2013, à 18:14

Whispering

Afficher les sous repertoires de plus de 10mo

Bonjour a tous ! Aujoud'hui, mon prof d'architecture informatique m'a donné un probleme suplémentaire car j'avais finis avant les autres. Ce probleme est :
Affichez les sous-répertoires de votre répertoire principal dont l’espace occupé est supérieur à 10
Mo (changez la valeur si vous obtenez trop de résultats).


Donc la je me dis, facile, je vias faire un script. Mais seulement, il me manque quelques données pour pouvoir l'utiliser, c'est plus dur que je le pensais. Pour l'instant, j'en suis la :

int i;
while (i < find ./ -type d | wc -l )
{

du /home >> fichier_cache;
cat fichier_cache | head -n i | tail -n 1 
i++;

if( premier_nombre_ligne > 10 000 000 ) 	
	afficher : Fin de la ligne 
}

Mon but est de faire une boucle, qui va boulcer autant de fois qu'il y a de dossiers, et a cahque passage elle va marquer le repertoire d'aprés avec ' du '
Seulement, pour tester si chaque répertoire fait bien 10mo, je dois utiliser le premier nombre que renvoie du pour chaque sortie. J'ai regardé le man, mais je comprend pas bien l'utilisation des patherns. Donc si quelqu'un pourrai me dire comment tronquer la sortie de du pour ne récuperer que la taille d'un repertoire, ça serai super ^^
Si une autre methode vous viens a l'esprit, je suis ouvert.
Merci d'avance !

Hors ligne

#2 Le 25/09/2013, à 18:28

pingouinux

Re : Afficher les sous repertoires de plus de 10mo

Bonjour,
Je ne sais pas si c'est exactement ce que tu veux :

while read taille nom
do
   [[ $taille -gt 10000000 ]] && printf "%12d %s\n" $taille "$nom"
done < <(du ~ -B1)

Ajouté :
Le script ci-dessus fait la liste des répertoires dont le contenu total (y compris les sous-répertoires) dépase 10Mo.
Si on ne veut tenir compte que des fichiers qui sont dans chaque répertoire, sans descendre dans l'arborescence :

while read nom
do
   taille=0
   while read fic
   do
      (( taille+=$(stat -c "%s" "$fic") ))
   done < <(find "$nom" -maxdepth 1 -type f)
   [[ $taille -gt 10000000 ]] && printf "%12d %s\n" $taille "$nom"
done < <(find ~ -type d)

Dernière modification par pingouinux (Le 25/09/2013, à 21:02)

Hors ligne

#3 Le 25/09/2013, à 21:40

nesthib

Re : Afficher les sous repertoires de plus de 10mo

Pourquoi faire compliqué ? Nul besoin de boucles smile

du -s ~/*/ | awk '$1>10240{print $2}'

pour une version plus robuste :

du -sm ~/*/ 2>/dev/null | awk -F'\t' '$1>10{print $2}'

ou installe ncdu tongue


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#4 Le 25/09/2013, à 21:54

pingouinux

Re : Afficher les sous repertoires de plus de 10mo

@nesthib :
En fait, ça dépend de ce que veut Whispering, car on ne fait pas la même chose.

Whispering a écrit :

Affichez les sous-répertoires de votre répertoire principal dont l’espace occupé est supérieur à 10Mo

Tu listes uniquement les répertoires situés directement dans celui d'origine (il faudrait aussi tenir compte de ceux commençant par un ".").
De mon côté, je traite tous les répertoires de l'arborescence.

Hors ligne

#5 Le 25/09/2013, à 22:24

Whispering

Re : Afficher les sous repertoires de plus de 10mo

Et bien en fait, lister tout les repertoires de +10 mo de mon working directory, ou d'un repertoire cible, c'est pas trés important, mais on va prendre comme exemple le ~/
Nesthib, tes commandes ne me renvoient que /home/whisp.Desktop, je crois que ça ne prend pas en compte les dossiers cachés, meme si la m'interesse beaucoup comme commande.
Par ailleur je ne connais pas 'awk' !


Pingouinux, ton script marche trés bien pour le coup, il m'affiche les bons dossiers les uns aprés les autres !
Je ne le comprend pas, mais je suppose que ça viendras..

Dernière modification par Whispering (Le 25/09/2013, à 22:32)

Hors ligne

#6 Le 26/09/2013, à 00:48

nesthib

Re : Afficher les sous repertoires de plus de 10mo

Prendre en compte les dossiers cachés il suffit de le demander gentiment au shell smile

shopt -s dotglob

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne