In Linux typ ik du -sh * | sort -rh
om de bestanden en mappen in mijn huidige map weer te geven, gesorteerd van groot naar klein.
Hoe doe ik dit in OSX-terminal, bij voorkeur zonder iets extra’s te installeren?
Antwoord 1, autoriteit 100%
Een beter antwoord op deze vraag 2 jaar later (met Terminal in OSX 10.11) is om eenvoudig -h toe te voegen aan het ls-commando om voor mensen leesbare bestandsgroottes te krijgen.
Voor zover ik heb begrepen is het in latere OSX-edities niet vereist om brew te gebruiken om coreutils te installeren. (Als ik het mis heb, corrigeer me dan.)
Als u bijvoorbeeld een lijst met bestanden in de huidige map wilt krijgen, als een lijst met één kolom en bestandsdetails wilt weergeven, voert u het volgende in:
ls -l
Als u voor mensen leesbare bestandsgroottes wilt, voegt u gewoon een “h” toe:
ls -hl
of
ls -lh
De letters na de “-” kunnen in dit geval in elke volgorde staan.
Als men, zoals in het detail van de vraag staat, wil dat de bestandslijst wordt geordend op bestandsgrootte, met de grootste bestandsgrootte bovenaan, voeg dan een hoofdletter “S” toe:
ls -lhS
Als u ook onzichtbare bestanden wilt weergeven, voeg dan een “a” toe:
ls -alhS
Ook de letters na de “-” kunnen in willekeurige volgorde staan.
Als u vaak bestanden maakt en bewerkt in de huidige map, misschien omdat u bezig bent met een taak of project, is een alternatieve combinatie:
ls -hltur
Hiermee worden bestanden weergegeven in door mensen leesbare bestandsgrootte, in een lange lijst onderaan het Terminal-venster.
De “t” geeft de sorteervolgorde van de bestanden aan op hun laatst gewijzigde datum/tijden.
De “u” verandert dit dan enigszins om de tijd te gebruiken waarop de bestanden voor het laatst zijn geopend, in plaats van voor het laatst gewijzigd.
De “r” keert vervolgens de volgorde van de lijst om, zodat de recentelijk geopende of ‘aangeraakte’ bestanden als laatste worden weergegeven, onderaan de lijst.
De volledige combinatie betekent dat je een gedetailleerde lijst hebt, met de bestanden die je het meest recent hebt gelezen, geopend of gewijzigd, of die op soortgelijke wijze zijn ‘aangeraakt’ door een proces dat je hebt uitgevoerd of een ander proces, allemaal onder aan het lijst.
Dus zelfs als de lijst in uw huidige map zo lang is dat het begin van de lijst niet langer kan worden gelezen zonder omhoog te scrollen, zullen de bestanden waarmee u interactie hebt gehad waarschijnlijk direct boven uw volgende zichtbaar blijven, klaar om in te typen, opdrachtregel.
Deze opties, en meer, staan op de man (manual) pagina voor het ls-commando:
man ls
Als u regelmatig bestanden wilt weergeven in een van de bovenstaande indelingen, of een andere naar keuze bij het lezen van de man-pagina, kunt u een alias toevoegen aan uw .bash_profile-bestand (bijv. met nano om dit bestand te openen, en dit te doen terwijl u zich in uw thuismap bevindt).
Om bijvoorbeeld te voldoen aan de wens van de originele poster van de vraag, opent u het bestand en voegt u op een nieuwe regel toe:
alias lss='ls -hlS'
Dan, bij het opslaan van het bestand en het verlaten van dat Terminal-venster en het openen van een nieuw Terminal-venster, zou het typen van “lss” in de opdrachtregel datgene moeten verschaffen waarnaar u routinematig zoekt bij het weergeven van bestanden.
Als je niet weet hoe je nano moet gebruiken, open dan eerst de man(uele) pagina door te typen
man nano
De man-pagina zal uitleggen hoe nano te gebruiken.
Om een man-pagina te verlaten en terug te gaan naar waar u een commando kunt invoeren, drukt u op de toets “q”.
Antwoord 2, autoriteit 31%
Dat doe je niet. Tenzij u GNU Coreutils installeert.
Bijvoorbeeld met brouwsel
brew install coreutils
en dan krijg je de gsort-opdracht die de optie -h ondersteunt.
Antwoord 3, autoriteit 7%
De onderstaande opdrachtregel geeft een lijst van alle bestanden en mappen in de huidige map, gesorteerd op grootte (van groot naar klein). De uitvoer is opgemaakt als
ls -S -lh | awk '{print $5, $9}'