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