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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [bash] stats des fichiers par taille

 

 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[bash] stats des fichiers par taille

n°1175561
thana54
made in concept
Posté le 28-10-2009 à 22:40:00  profilanswer
 

Le but de ce script est de déterminer le nombre de petits fichiers (ou pas) dans un dossier.
On peut spécifier les tailles que l'ont veut dans la variable size_list_to_find.

 

Bon c'est sûrement peu de chose, mais voici le petit script que je viens de faire pour compter le nombre de fichier et les trier par taille:

Code :
  1. #!/bin/bash
  2. ## ${0##*/} utilise les "parameter expansions" pour decouper la chaine
  3. echo ">>> Start of ${0##*/}";
  4. ################################################################################
  5. # Variables personnelles                                                       #
  6. ################################################################################
  7. # Liste des tailles des fichiers à rechercher
  8. size_list_to_find=( -1 2 4 8 16 32 64 128 256 512 1024 +1024 );
  9. ################################################################################
  10. # Variables nécessaires pour le script                                         #
  11. ################################################################################
  12. source /etc/profile;
  13. # Sauvegarde de l'IFS
  14. oIFS="$IFS";
  15. # Caractère de découpage (Input Field Separator)
  16. IFS=$'\n';
  17. # dossier où commencer la recherche
  18. dossier=$1;
  19. total_files=0;
  20. total_folders=0;
  21. echo "Dossier de travail: ${dossier}";
  22. for size in ${size_list_to_find[@]}; do
  23. # taille minimale à rechercher
  24. taille_basse=1;
  25. # taille maximale à rechercher
  26. taille_haute=$size;
  27. # determination de la fourchette de taille, si nulle on ne recherche que sur une taille
  28. if [[ "$taille_haute" != "*+*" ]]; then
  29.  if ((taille_haute / 2 + 1 < taille_haute )); then
  30.   (( taille_basse = size/2 + 1 ));
  31.  fi
  32. fi
  33. #echo -n "${taille_basse} - ${taille_haute}";
  34. if [[ $taille_haute != *+* && $taille_haute != *-* ]]; then
  35.  # pour toutes les tailles hors la dernière et pour une taille minimale et maximale
  36.  echo -n "    Recherche des fichiers de taille: ${taille_basse}k-${taille_haute}k :: ";
  37.  # le paramètre -size de la commande find est exclusif. Les chiffres spécifiés ne sont pas inclus dans les résultats
  38.  # Il faut donc élagir cette fourchette pour inclure les valeurs spécifiée dans size_list_to_find
  39.  (( taille_basse -= 1 ));
  40.  (( taille_haute += 1 ));
  41.  nombre=`find ${dossier} -size +${taille_basse}k -and -size -${taille_haute}k -type f 2> /dev/null | grep -c ${dossier}`;
  42.  (( total_files += nombre ));
  43.  echo "    ${nombre}";
  44. else
  45.  # pour la dernière taille trouvée ou pour une seule taille de fichier
  46.  echo -n "    Recherche des fichiers de taille: ${size}k :: ";
  47.  # pour la première taille, on veut connaitre le nombre de fichier dont la taille est inférieure ou égale à 1k
  48.  if [[ $taille_haute = *-* ]]; then
  49.   (( taille_haute += 2 ));
  50.   signe="-";
  51.  fi
  52.  #pour la dernière taille, on veut connaitre le nombre de fichier dont la taille est supérieure ou égale à 1024k
  53.  if [[ $taille_haute = *+* ]]; then
  54.   (( taille_haute -= 1 ));
  55.   signe="+";
  56.  fi
  57.  nombre=`find ${dossier} -size ${signe}${taille_haute}k -type f 2> /dev/null | grep -c ${dossier}`;
  58.  (( total_files += nombre ));
  59.  echo "    ${nombre}";
  60. fi
  61. done;
  62. echo "Nombre de total de fichiers trouvés: ${total_files}";
  63. total_folders=`find ${dossier} -type d 2> /dev/null | grep -c ${dossier}`;
  64. echo "Nombre total de dossiers parcourus pendant cette recherche: ${total_folders}";
  65. (( total = total_files + total_folders ));
  66. echo "Nombre total d'éléments parcourus: ${total}";
  67. ## /


Code :
  1. sudo ./ssd_file_sizes /home/thana/
  2. >>> Start of ssd_file_sizes
  3. Dossier de travail: /home/thana/
  4.     Recherche des fichiers de taille: -1k ::     49
  5.     Recherche des fichiers de taille: 1k-2k ::     2348
  6.     Recherche des fichiers de taille: 3k-4k ::     675
  7.     Recherche des fichiers de taille: 5k-8k ::     1006
  8.     Recherche des fichiers de taille: 9k-16k ::     1450
  9.     Recherche des fichiers de taille: 17k-32k ::     2807
  10.     Recherche des fichiers de taille: 33k-64k ::     2195
  11.     Recherche des fichiers de taille: 65k-128k ::     1782
  12.     Recherche des fichiers de taille: 129k-256k ::     73
  13.     Recherche des fichiers de taille: 257k-512k ::     38
  14.     Recherche des fichiers de taille: 513k-1024k ::     34
  15.     Recherche des fichiers de taille: +1024k ::     17
  16. Nombre de total de fichiers trouvés: 12474
  17. Nombre total de dossiers parcourus pendant cette recherche: 1225
  18. Nombre total d'éléments parcourus: 13699
 


Par la suite, je pense rajouter un petit % pour tirer plus des conclusions.


Message édité par thana54 le 29-10-2009 à 19:20:55
mood
Publicité
Posté le 28-10-2009 à 22:40:00  profilanswer
 

n°1175566
thana54
made in concept
Posté le 28-10-2009 à 22:47:48  profilanswer
 

Là c'est flagrant, je n'ai apparemment pas de fichiers >1Mo, mais pourtant j'ai plus de 400Go :/

Citation :

sudo ./ssd_file_sizes /media/
>>> Start of ssd_file_sizes
Dossier de travail: /media/
    Recherche des fichiers de taille: 0k-1k =>    0
    Recherche des fichiers de taille: 1k-2k =>    0
    Recherche des fichiers de taille: 2k-4k =>    1854
    Recherche des fichiers de taille: 4k-8k =>    2702
    Recherche des fichiers de taille: 8k-16k =>    3087
    Recherche des fichiers de taille: 16k-32k =>    2420
    Recherche des fichiers de taille: 32k-64k =>    2574
    Recherche des fichiers de taille: 64k-128k =>    1834
    Recherche des fichiers de taille: 128k-256k =>    1107
    Recherche des fichiers de taille: 256k-512k =>    1297
    Recherche des fichiers de taille: 512k-1024k =>    1745
    Recherche des fichiers de taille: >+1024k =>    1
Nombre de total de fichiers trouvés: 18621
Nombre total de dossiers parcourus pendant cette recherche: 3544
Nombre total d'éléments parcourus: 22165


Citation :

du /media/ -s 2> /dev/null
467G /media/
467G total


comment savoir que le find -size +/-size est inclusif ou pas ?


Message édité par thana54 le 28-10-2009 à 22:48:48
n°1175828
thana54
made in concept
Posté le 29-10-2009 à 18:18:48  profilanswer
 

Mise à jour du script, j'en récupère un peu plus, mais toujours pas autant qu'avec un find -type f :/

n°1175837
thana54
made in concept
Posté le 29-10-2009 à 19:22:05  profilanswer
 

Citation :

sudo ./ssd_file_sizes /home/thana/
>>> Start of ssd_file_sizes
Dossier de travail: /home/thana/
    Recherche des fichiers de taille: -1k ::     49
    Recherche des fichiers de taille: 1k-2k ::     2348
    Recherche des fichiers de taille: 3k-4k ::     675
    Recherche des fichiers de taille: 5k-8k ::     1006
    Recherche des fichiers de taille: 9k-16k ::     1450
    Recherche des fichiers de taille: 17k-32k ::     2807
    Recherche des fichiers de taille: 33k-64k ::     2195
    Recherche des fichiers de taille: 65k-128k ::     1782
    Recherche des fichiers de taille: 129k-256k ::     73
    Recherche des fichiers de taille: 257k-512k ::     38
    Recherche des fichiers de taille: 513k-1024k ::     34
    Recherche des fichiers de taille: +1024k ::     17
Nombre de total de fichiers trouvés: 12474
Nombre total de dossiers parcourus pendant cette recherche: 1225
Nombre total d'éléments parcourus: 13699


Citation :


sudo find /home/thana/ -type f 2> /dev/null  | grep /home/thana/ -c
12474
sudo find /home/thana/ -type d 2> /dev/null  | grep /home/thana/ -c
1225

 



Victory [:volta]

 

Vous pouvez tester histoire de valider ou non le script :jap:


Message édité par thana54 le 29-10-2009 à 19:22:35
n°1175845
Amiral Fon​zie
Wow
Posté le 29-10-2009 à 19:53:43  profilanswer
 

Fonctionne parfaitement chez moi.
 

Code :
  1. >>> Start of files_size_stats
  2. Dossier de travail: /home/gounette
  3.     Recherche des fichiers de taille: -1k ::     443
  4.     Recherche des fichiers de taille: 1k-2k ::     82842
  5.     Recherche des fichiers de taille: 3k-4k ::     11917
  6.     Recherche des fichiers de taille: 5k-8k ::     10836
  7.     Recherche des fichiers de taille: 9k-16k ::     12846
  8.     Recherche des fichiers de taille: 17k-32k ::     23435
  9.     Recherche des fichiers de taille: 33k-64k ::     6834
  10.     Recherche des fichiers de taille: 65k-128k ::     3190
  11.     Recherche des fichiers de taille: 129k-256k ::     1772
  12.     Recherche des fichiers de taille: 257k-512k ::     1637
  13.     Recherche des fichiers de taille: 513k-1024k ::     690
  14.     Recherche des fichiers de taille: +1024k ::     4438
  15. Nombre de total de fichiers trouvés: 160880
  16. Nombre total de dossiers parcourus pendant cette recherche: 11136
  17. Nombre total d'éléments parcourus: 172016


 
 :jap:

n°1175874
thana54
made in concept
Posté le 29-10-2009 à 22:23:05  profilanswer
 

Test sur mon /media/ qui comprend de l'ext3 et du ntfs, ca passe plutôt bien

Citation :

sudo ./ssd_file_sizes /media/
[sudo] password for thana:  
>>> Start of ssd_file_sizes
Dossier de travail: /media/
    Recherche des fichiers de taille: -1k ::     133
    Recherche des fichiers de taille: 1k-2k ::     8257
    Recherche des fichiers de taille: 3k-4k ::     3099
    Recherche des fichiers de taille: 5k-8k ::     3368
    Recherche des fichiers de taille: 9k-16k ::     3363
    Recherche des fichiers de taille: 17k-32k ::     2527
    Recherche des fichiers de taille: 33k-64k ::     2652
    Recherche des fichiers de taille: 65k-128k ::     1854
    Recherche des fichiers de taille: 129k-256k ::     1123
    Recherche des fichiers de taille: 257k-512k ::     1302
    Recherche des fichiers de taille: 513k-1024k ::     1746
    Recherche des fichiers de taille: +1024k ::     3479
Nombre de total de fichiers trouvés: 32903
Nombre total de dossiers parcourus pendant cette recherche: 3544
Nombre total d'éléments parcourus: 36447


thunar me dis que j'ai tout ca:

Citation :

36453 éléments, totalisant 466,8 GB


Petit écart qui reste, mais qui peut fausser le calcul [:transparency]

n°1176126
thana54
made in concept
Posté le 30-10-2009 à 22:16:27  profilanswer
 

L'écart se creuse:

Citation :

./ssd_file_size / && find / -type f | grep -c /  
>>> Start of ssd_file_size
Dossier de travail: /
    Recherche des fichiers de taille: -1k ::     22657
    Recherche des fichiers de taille: 1k-2k ::     41706
    Recherche des fichiers de taille: 3k-4k ::     17754
    Recherche des fichiers de taille: 5k-8k ::     8401
    Recherche des fichiers de taille: 9k-16k ::     8799
    Recherche des fichiers de taille: 17k-32k ::     7548
    Recherche des fichiers de taille: 33k-64k ::     4316
    Recherche des fichiers de taille: 65k-128k ::     2374
    Recherche des fichiers de taille: 129k-256k ::     1122
    Recherche des fichiers de taille: 257k-512k ::     878
    Recherche des fichiers de taille: 513k-1024k ::     468
    Recherche des fichiers de taille: +1024k ::     1062
Nombre de total de fichiers trouvés: 117085
Nombre total de dossiers parcourus pendant cette recherche: 14365
Nombre total d'éléments parcourus: 131450
 
find: "/proc/10733/task/10733/fd/5": Aucun fichier ou dossier de ce type
find: "/proc/10733/task/10733/fdinfo/5": Aucun fichier ou dossier de ce type
find: "/proc/10733/fd/5": Aucun fichier ou dossier de ce type
find: "/proc/10733/fdinfo/5": Aucun fichier ou dossier de ce type
116851


Et d'après thunar: 173865 éléments :/


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

  [bash] stats des fichiers par taille

 

Sujets relatifs
[bash] Contrôler la longueur des lignes dans un fichier.[bash/perl] comparer un nom de dossier avec la date
script bash et setuidbash, écrire dans un tableau
Script bash : exécution de plusieurs scriptsengendrer une action SI 2 fichiers sont différents.
Structure fichiers ThunderbirdPostfix/SQUID/SAMBA: Console web PHP/AJAX Open Source
Equivalent de 'chomp' sur bashSamba & LDAP, sans controleur de domaine ( partage de fichiers )
Plus de sujets relatifs à : [bash] stats des fichiers par taille


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