web-dev-qa-db-fra.com

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 par l'homme, allant du plus grand au plus petit?

J'ai essayé

du -h | sort -V -k 1 

mais cela ne semble pas fonctionner.

46
user46976

ls(1)/sort:

-S     sort by file size
51
Hello71
$ 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
32
kev

Si vous avez la version sort appropriée, vous pouvez simplement utiliser:

du -h | sort -rh

le mien est

$ sort --version
sort (GNU coreutils) 8.12
14
ztank1013

du -ha | sort -h

du: estime 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
Andrew_1510

ls -S n'était pas une option sur le système d'exploitation pour moi. Ce qui suit a 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 qui signifie trie 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

3
Alex

Je travaille pour moi:

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

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

ls -lS
1
Aaron

Contrairement à ls -S, ceci gérera correctement les fichiers fragmentés:

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