Forum Astuces.divers Trouver dans quels répertoires vous avez le plus de fichiers

Posté par (page perso) .
Tags : aucun
2
22
oct.
2010
Avoir trop de fichiers peut ralentir un système de fichiers, il peut donc être intéressant de voir où se cachent vos fichier: un programme buggé peut par exemple en avoir créé des centaines de mililers des fichiers à votre insu!

Sans plus de discours, voici une petite commande bash pour localiser où vous avez le plus de fichiers:

find . -type d | while read i; do echo $(find "$i" | wc -l) "$i"; done | sort -n

(parenthèse: si vous voulez savoir quels répertoires prennent de l'espace disque,

du -h | sort -h

marche extrêmement bien, sur les distributions récentes uniquement)
  • # tu comptabilises aussi les fichiers des sous-répertoires

    Posté par (page perso) . Évalué à 2.

    moi j'aurais fait

    find . -type d | while read i; do echo $(find -P "$i" -maxdepth 1 -type f | wc -l) "$i"; done | sort -n
  • # Perso je dirai....

    Posté par (page perso) . Évalué à 2.

    Hello,

    J'ai déjà constaté que le find est un peu violent en I/O comparé à un ls...
    Donc plutôt que faire un double find qui arrache un peu le disque moi je te propose :

    for dir in `find ./ -type d`; do echo "`ls $dir| wc -l` $dir " ; done | sort -n

    Concernant le sort -h, connaissait pas, merci ! A l'ancienne qui passe partout même sur le vieux nix c'est : du -k | sort -n

    Fuse : j'en Use et Abuse !

  • # Utilisation des disques

    Posté par (page perso) . Évalué à 1.

    Merci pour cette commande bash!

    Pour l'utilisation des disques un petit utilitaire graphique est présent sûrement sous la plupart des distributions linux, Analyseur d'utilisation des disques. Très agréable et permet de savoir où faire le nettoyage en cas de besoin ;). (dans le menu accessoires)
  • # Encore plus rapide

    Posté par . Évalué à 4.

    Avoir de nombreux fichiers dans un système arborescent ne réduit pas vraiment les performances; des problèmes apparaissent avec certains systèmes de fichiers lorsqu'on place trop de fichiers dans un même répertoire.

    Mais un dossier qui contient de nombreux fichiers a une taille en conséquence.
    $ ls -ld /etc/default /usr/bin
    drwxr-xr-x 2 root root 4096 jun 24 15:17 /etc/default
    drwxr-xr-x 2 root root 36864 oct 21 04:12 /usr/bin


    Du coup, si tous les fichiers sont dans un même répertoire. on peut se baser simplement dessus pour lister les fichiers, c'est un peu moins précis mais d'une efficacité sans commune mesure avec ta solution.

    find . -type d | xargs ls -Sld
    • [^] # Re: Encore plus rapide (humour)

      Posté par . Évalué à 2.

      toutefois, il faut faire attention car avec les options de ls
      find . -type d | xargs ls -lSd

      tu pourrais des ennuis avec la police ou simplement avoir des resultats etranges :p

      bon ok on est vendredi, tout ca
      aussi ne me chercher pas, je suis dehors (en plus il fait beau).
    • [^] # Re: Encore plus rapide

      Posté par . Évalué à 1.

      Effectivement, la taille de "l'objet répertoire" (par opposition à la taille du contenu) augmente quand on ajoute de nouveaux fichiers (pour y stocker leurs nomes, date, propriétaire, droits ....).

      Mais cette taille ne diminue pas quand on efface des fichiers. Ta commande affiche donc la taille maximum qu'ont eu les répertoires au cours de leur vie.
      • [^] # Re: Encore plus rapide

        Posté par . Évalué à 1.

        Bien vu. Effectivement, il est possible que la taille ne diminue pas pour certains systèmes de fichiers.

        Pour les dates, propriétaires, droits.. ils sont dans l'inode, et l'inode n'est généralement pas dans le répertoire.
        Il reste le nom du fichier, et son numéro d'inode. Ce qui fait que la taille du répertoire est également très dépendante de la longueur des noms des fichiers.
    • [^] # Commentaire supprimé

      Posté par . Évalué à 2.

      Ce commentaire a été supprimé par l'équipe de modération.

      • [^] # Re: Encore plus rapide

        Posté par . Évalué à 0.

        Lorsqu'on liste tous les fichiers dans un répertoire sans chercher un fichier particulier; que le répertoire soit indexé ou non ne change pas les performances.

        C'est le cas ici. On parcours systématiquement l'ensemble du répertoire.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.