Question Comment puis-je trier tous les fichiers par taille dans un répertoire?


Comment puis-je afficher les fichiers dans un répertoire Unix triés par leur taille lisible, allant du plus grand au plus petit?

j'ai essayé

du -h | sort -V -k 1 

mais cela ne semble pas fonctionner.


37
2017-12-16 21:16


origine


Pouvez-vous préciser si vous vous attendez à ce que la taille des sous-répertoires apparaisse également dans la sortie, et également si vous recherchez la taille apparente des fichiers ou la taille réelle qu'ils utilisent sur le disque? - jlliagre


Réponses:


ls(1)  /sort:

-S     sort by file size

43
2017-12-16 21:24



-S n'est plus un argument de tri valide au moins sur Ubuntu. La réponse ci-dessous de @alex a fonctionné pour moi. Le lien de réponse est superuser.com/a/990437/528836. - Prasanna


$ ls -lhS

-l     use a long listing format
-h     with -l, print sizes in human readable format (e.g., 1K 234M 2G)
-S     sort by file size

28
2017-12-17 13:27





Si vous avez le bon sort version que vous pouvez simplement utiliser:

du -h | sort -rh

le mien est

$ sort --version
sort (GNU coreutils) 8.12

10
2017-12-16 22:09





du -ha | sort -h

du : estimation de l'utilisation du disque de fichier.

-h : for human
-a : all files

sort : trie les lignes de texte.

-h : for human

man du; man sort pour plus. Cela fonctionne pour moi sur Ubuntu v15.


4
2018-01-21 09:56





ls -S n'était pas une option sur le système d'exploitation pour moi. Les suivants ont travaillé:
ls -l | sort -k 5nr
Ils "clé" était de spécifier la colonne à trier (l'obtenir, la "clé"). Ci-dessus je spécifie -k 5nr sens trier sur la 5ème colonne qui est la taille (5) évaluée comme un nombre (n) dans l'ordre décroissant (n) 

Référence trier la documentation pour plus d'informations


2
2017-10-22 18:15





J'ai ça pour moi:

ls -l | sort -g -k 5 -r

Qui (je viens de le comprendre) est le même que:

ls -lS

1
2017-12-16 21:27





contrairement à ls -S, cela traitera correctement les fichiers fragmentés:

ls -lsh | sort -n | sed 's/^[0-9 ]* //'

0
2017-12-16 21:38