2 votes

Comment identifier les plus gros fichiers dans un répertoire incluant ses sous-répertoires?

J'ai un répertoire avec beaucoup de fichiers et de sous-répertoires. Je sais qu'il y a un petit nombre de gros fichiers quelque part. Quel est un moyen rapide et facile d'identifier un ou plusieurs gros fichiers dans un répertoire, y compris dans tous ses sous-répertoires?

J'ai essayé cette solution:

find . -printf '%s %p\n'|sort -nr|head
find: -printf: opérateur ou argument inconnu

et celle-ci:

find -type f -printf '%s %p\n' |sort -nr | head

find: option illégale -- t
utilisation : find [-H | -L | -P] [-EXdsx] [-f chemin] chemin ... [expression]
       find [-H | -L | -P] [-EXdsx] -f chemin [chemin ...] [expression]

et celle-ci:

find . -type f -printf "%s %p\n" | sort -nr | head -1
find: -printf: opérateur ou argument inconnu

5voto

Michael Zhou Points 167

Voici un exemple utilisant BSD find et stat-

find . -type f -exec stat -f '%z %N' {} + | sort -nr

4voto

Oskar Points 1242

J'aime mieux utiliser Spotlight que de parcourir le système de fichiers pour des raisons de rapidité. Cela ne rapporte pas directement les tailles, donc vous ne pouvez pas trier les 10 premiers, mais vous pouvez rapidement (en une fraction de seconde) localiser les endroits où se trouvent de gros fichiers.

mdfind 'kMDItemFSSize > 2000000000' | grep "$(pwd)"

Plus d'options sont disponibles sur ce fil de discussion. Ajoutez ou enlevez des zéros ou choisissez votre seuil de taille pour trouver des gros fichiers.


En ce qui concerne vos erreurs de syntaxe et les autres problèmes auxquels vous serez confronté, il y a la gestion des espaces dans les fichiers et répertoires, donc les "" autour de $(pwd) pour que vous puissiez rapidement atteindre un niveau où vous devrez en apprendre un peu plus sur les shells, les pipes, les espaces blancs et l'échappement des mots / variables. Dans le pire des cas, isolez chaque élément ci-dessus pour que vous puissiez comprendre ce que la sortie de la commande find vous dit et ensuite ajoutez les filtres / traitements une fois que vous avez des résultats valides.

Si tout ce que vous cherchez est de nettoyer de gros fichiers et que vous n'avez pas besoin d'un script et que vous voulez apprendre cela plus tard, je recommande les informations système, la gestion du stockage ou Daisy Disk. Finder peut également bien calculer toutes les tailles pour moi dans les préférences si vous souhaitez interagir en naviguant.

3voto

nohillside Points 82672

BSD find (qui fait partie de macOS) et GNU find (qui fait partie des distributions Linux) utilisent des options différentes, donc vos exemples ne fonctionneront pas.

  • Vous pouvez installer GNU find via Homebrew (brew install findutils) et ensuite utiliser gfind pour obtenir la syntaxe / les options GNU
  • Pour une solution rapide, du -a DOSSIER-PRINCIPAL | sort -r fonctionnera également. Cela liste à la fois les fichiers et les répertoires, donc cela ne fonctionnera pas facilement dans un script.

1voto

Douglas Points 10417

Si vous cherchez le(s) plus grand(s) fichier(s) de chaque répertoire et sous-répertoires enfants

Utilisez la commande du:

du -ah . | sort -nr | head -n X

Où X est le nombre de résultats que vous voulez. Par exemple, si vous voulez les 25 premiers, remplacez X par 25. Si vous ne voulez que le plus grand fichier, utilisez 1. Il affichera la sortie dans un "format lisible par l'humain."

0voto

Stewart Points 211

Avez-vous besoin de cela pour un script, ou un outil manuel est-il acceptable?

Je trouve que Disk Inventory X est exceptionnel pour identifier les grands répertoires et fichiers.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X