web-dev-qa-db-fra.com

Comment lister les tailles de fichiers récursives de fichiers et de répertoires dans un répertoire?

Comment lister tous les fichiers d'un répertoire et leur taille de fichier récursive?

---modifier

Je veux voir les tailles "cumulées" aux répertoires parents dans le répertoire répertorié. Je ne veux pas voir les répertoires enfants, leur contenu ou leur taille.

47
hawkeye

Je suppose que le moyen le plus simple consiste à saisir ls -l ou ls -lh, qui fournira la taille du fichier dans un format lisible par l'homme (Ko, Mo, etc.).

Si 'récursivement' signifie la liste de tous les dossiers suivants, par exemple:

/ foo /
/foo/bar/....

Ensuite, vous devriez également ajouter le paramètre Rname__, comme ls -lR ou ls -lhR

Vous trouverez plus d’informations sur lsen tapant man ls.

Mettre à jour:

La commande suivante proposée par Lekensteyn fera probablement l'affaire:

du -h --max-depth=1 <folder>

-h est lisible par l'homme
--apparent-size est un autre moyen d’afficher les tailles déjà indiquées
--max-depth est le niveau de sous-dossiers auquel vous voulez accéder.

52
Pavlos G.
apt-get install ncdu

enter image description here

Il est interactif aussi, donc si vous voulez vérifier un sous-dossier, il suffit de monter, de descendre et d’entrer.

58
ihashacks

Pour obtenir la taille totale d'un répertoire et de tous les enfants

du -hs directory/*
30
Richard Holloway

Consultez également tree. Il n'est pas installé par défaut mais ce sont les référentiels.

Exemple:

richard@legend:~$ tree Applications/ -s
Applications/
├── [           4096]  AlexFTPS-1.0.2
│   ├── [      31232]  AlexPilotti.FTPS.Client.dll
│   ├── [     274432]  C5.dll
│   ├── [       1457]  C5-License
│   ├── [      35147]  COPYING
│   ├── [       7639]  COPYING.LESSER
│   ├── [         70]  ftps
│   ├── [      28672]  ftps.exe
│   ├── [      98304]  Plossum CommandLine.dll
│   ├── [       1557]  Plossum-License
│   └── [       2560]  README
└── [           4096]  src
    └── [     180849]  AlexFTPS_bin_1.0.2.Zip

Vous trouverez plus d'options dans la page de manuel.

17
Richard Holloway

Comme vous ne mentionnez pas spécifiquement que vous avez besoin d’une solution basée sur un terminal, je pense que baobab a.k.a. L’analyseur d’utilisation du disque est absent de la liste.

Il est installé dans Ubuntu par défaut et fait exactement ce que vous voulez dans une interface graphique de Nice avec la possibilité d’explorer la hiérarchie des répertoires.

En plus d'afficher une liste de répertoires avec leurs tailles, il affiche également un diagramme en anneaux ou en treemap de l'utilisation du système de fichiers, ce qui est extrêmement utile pour visualiser les répertoires qui occupent le plus d'espace.

baobab the Disk Usage Analyzer

13
Sergey

A solution terminale est la commande du:

du --all --human-readable --apparent-size

(abrégé: du -ah --apparent-size)

du affiche l'utilisation du disque pour chaque fichier et répertoire. Les options expliquées:

  • --all, -a - affiche également la taille des fichiers, pas seulement des répertoires
  • --human-readable, -h - affiche les tailles dans un format lisible par l'homme, par exemple. 10K (10 kilo-octets), 10 (10 octets)
  • --apparent-size - affiche la taille réelle du fichier, pas celle utilisée par le disque.
6
Lekensteyn

Cela semble faire l'affaire lorsque des simlinks sont impliqués.

ls -LRlh
2
Mulki

Pour obtenir une liste triée, mettez tout en Mo et triez:

du -m * | sort -n

Ou utilisez un outil tel que DiskReport pour générer un rapport d'arborescence complète du disque.

1
Erwan

Une autre solution de terminal avec find et sort (par taille de fichier, colonne 1)

$ find . -maxdepth 1 ! -path . -printf "%s %p\n" | sort -n -k1                              
178 ./somefile.txt
219 ./somefile2.txt
4096 ./c
4096 ./cs2
4096 ./Perl
4096 ./python
4096 ./random
4096 ./sh
1
Sergiy Kolodyazhnyy