Sous Linux, je tape du -sh * | sort -rh
pour afficher les fichiers et répertoires de mon répertoire actuel, triés du plus grand au plus petit.
Comment faire cela dans le terminal OSX, de préférence sans rien installer de plus?
Une meilleure réponse à cette question 2 ans plus tard (en utilisant Terminal dans OSX 10.11) consiste simplement à ajouter -h à la commande ls pour obtenir des tailles de fichier lisibles par l'homme.
À ma connaissance dans les éditions OSX ultérieures, l'utilisation de brew pour installer coreutils n'est pas requise. (Si je me trompe, quelqu'un me corrige.)
Par exemple, pour obtenir une liste de fichiers dans le répertoire en cours, sous forme de liste à une seule colonne, et montrant les détails du fichier, entrez:
ls -l
Si vous voulez des tailles de fichier lisibles par l'homme, ajoutez simplement un "h":
ls -hl
ou
ls -lh
Les lettres après le "-" peuvent être dans n'importe quel ordre dans ce cas.
Si, comme l'indique le détail de la question, on veut que la liste des fichiers soit ordonnée par taille de fichier, la plus grande taille de fichier en haut, puis ajoutez un "S" majuscule:
ls -lhS
Si vous souhaitez que les fichiers invisibles soient également répertoriés, ajoutez un "a":
ls -alhS
Encore une fois, les lettres après le "-" peuvent être dans n'importe quel ordre.
Si vous créez et modifiez souvent des fichiers dans le répertoire en cours, peut-être parce que vous êtes en train de travailler sur une tâche ou un projet, une autre combinaison est:
ls -hltur
Cela répertorie les fichiers au format de taille de fichier lisible par l'homme, dans une longue liste dans la fenêtre du terminal.
Le "t" indique l'ordre de tri des fichiers selon leur date/heure de dernière modification.
Le "u" modifie ensuite légèrement ceci pour utiliser l'heure de la dernière consultation des fichiers, plutôt que la dernière modification.
Le "r" inverse ensuite l'ordre de la liste afin que les fichiers les plus récemment consultés ou "touchés" soient listés en dernier, en bas de la liste.
La combinaison complète signifie que vous avez une liste détaillée, avec les fichiers que vous avez lus, ouverts ou modifiés le plus récemment, ou qui ont été `` touchés '' de la même manière par un processus que vous avez exécuté ou un autre processus, tous au bas de la liste.
Par conséquent, même si la liste de votre répertoire actuel est longue de sorte que le début de la liste ne peut plus être lu sans défilement vers le haut, les fichiers avec lesquels vous avez interagi resteront probablement visibles immédiatement au-dessus de votre prochaine ligne de commande, prête à taper.
Ces options, et plus encore, se trouvent dans la page man (manuelle) de la commande ls:
man ls
Si vous souhaitez lister régulièrement les fichiers dans l'un des formats ci-dessus, ou un autre de votre choix en lisant la page de manuel, vous pouvez ajouter un alias à votre fichier . Bash_profile, (par exemple en utilisant nano pour l'ouvrir) fichier, et le faire pendant que vous êtes dans votre répertoire personnel).
Par exemple, pour répondre à ce que souhaitait l'affiche originale de la question, ouvrez le fichier et sur une nouvelle ligne ajoutez:
alias lss='ls -hlS'
Ensuite, lors de l'enregistrement du fichier et de la fermeture de cette fenêtre de terminal et de l'ouverture d'une nouvelle fenêtre de terminal, taper "lss" dans la ligne de commande devrait fournir ce que vous recherchez régulièrement lors de la liste des fichiers.
Si vous ne savez pas comment utiliser nano, affichez d'abord sa page de manuel (ual) en tapant
man nano
La page de manuel explique comment utiliser nano.
Pour quitter une page de manuel et revenir à l'endroit où vous pouvez entrer une commande, appuyez sur la touche "q".
Non. Sauf si vous installez GNU Coreutils.
Avec infusion par exemple
brew install coreutils
puis vous obtenez la commande gsort qui prend en charge l'option -h.
La ligne de commande ci-dessous répertorie tous les fichiers et répertoires du répertoire actuel triés en fonction de la taille (du plus grand au plus petit). La sortie est formatée pour
ls -S -lh | awk '{print $5, $9}'