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 :
 - #!/bin/bash
 - ## ${0##*/} utilise les "parameter expansions" pour decouper la chaine
 - echo ">>> Start of ${0##*/}";
 - ################################################################################
 - # Variables personnelles                                                       #
 - ################################################################################
 - # Liste des tailles des fichiers à rechercher
 - size_list_to_find=( -1 2 4 8 16 32 64 128 256 512 1024 +1024 );
 - ################################################################################
 - # Variables nécessaires pour le script                                         #
 - ################################################################################
 - source /etc/profile;
 - # Sauvegarde de l'IFS
 - oIFS="$IFS";
 - # Caractère de découpage (Input Field Separator)
 - IFS=$'\n';
 - # dossier où commencer la recherche
 - dossier=$1;
 - total_files=0;
 - total_folders=0;
 - echo "Dossier de travail: ${dossier}";
 - for size in ${size_list_to_find[@]}; do
 - 	# taille minimale à rechercher
 - 	taille_basse=1;
 - 	# taille maximale à rechercher
 - 	taille_haute=$size;
 - 	# determination de la fourchette de taille, si nulle on ne recherche que sur une taille
 - 	if [[ "$taille_haute" != "*+*" ]]; then
 -   if ((taille_haute / 2 + 1 < taille_haute )); then
 -   	(( taille_basse = size/2 + 1 ));
 -   fi
 - 	fi
 - 	#echo -n "${taille_basse} - ${taille_haute}";
 - 	if [[ $taille_haute != *+* && $taille_haute != *-* ]]; then
 -   # pour toutes les tailles hors la dernière et pour une taille minimale et maximale
 -   echo -n "    Recherche des fichiers de taille: ${taille_basse}k-${taille_haute}k :: ";
 -   # le paramètre -size de la commande find est exclusif. Les chiffres spécifiés ne sont pas inclus dans les résultats
 -   # Il faut donc élagir cette fourchette pour inclure les valeurs spécifiée dans size_list_to_find
 -   (( taille_basse -= 1 ));
 -   (( taille_haute += 1 ));
 -   nombre=`find ${dossier} -size +${taille_basse}k -and -size -${taille_haute}k -type f 2> /dev/null | grep -c ${dossier}`;
 -   (( total_files += nombre ));
 -   echo "    ${nombre}";
 - 	else
 -   # pour la dernière taille trouvée ou pour une seule taille de fichier
 -   echo -n "    Recherche des fichiers de taille: ${size}k :: ";
 -   # pour la première taille, on veut connaitre le nombre de fichier dont la taille est inférieure ou égale à 1k
 -   if [[ $taille_haute = *-* ]]; then
 -   	(( taille_haute += 2 ));
 -   	signe="-";
 -   fi
 -   #pour la dernière taille, on veut connaitre le nombre de fichier dont la taille est supérieure ou égale à 1024k
 -   if [[ $taille_haute = *+* ]]; then
 -   	(( taille_haute -= 1 ));
 -   	signe="+";
 -   fi
 -   nombre=`find ${dossier} -size ${signe}${taille_haute}k -type f 2> /dev/null | grep -c ${dossier}`;
 -   (( total_files += nombre ));
 -   echo "    ${nombre}";
 - 	fi
 - done;
 - echo "Nombre de total de fichiers trouvés: ${total_files}";
 - total_folders=`find ${dossier} -type d 2> /dev/null | grep -c ${dossier}`;
 - echo "Nombre total de dossiers parcourus pendant cette recherche: ${total_folders}";
 - (( total = total_files + total_folders ));
 - echo "Nombre total d'éléments parcourus: ${total}";
 - ## /
 
  | 
Code :
 - 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
 
  | 
 
Par la suite, je pense rajouter un petit % pour tirer plus des conclusions.
 
Message édité par thana54 le 29-10-2009 à 19:20:55