Marx Online 301
Postad: 24 nov 19:21 Redigerad: 24 nov 21:53

Linux

Vad är det för skillnad om jag vill sortera de 5 största filerna i en mapp enligt deras storlekar med hjälp av kommandoraden "ls -lrS | head -5" eller "ls -l | sort -rn -k5 | head -5"? Bägge två ger samma svar. 

De ger ju samma svar så det är ekvivalent. Skulle föredra den första för det är tydligare att det är storlek man sorterar på, annars måste man ju räkna kolumner. Dessutom kortare och bara en pipe.

Laguna Online 16910
Postad: 24 nov 20:51

För mig blir det inte alls samma svar.

Programmeraren Online 961
Postad: 24 nov 21:15

I princip ingen större skillnad, mest detaljer. Ibland kan små skillnader i olika linux-dialekter spela in så ska det sparas som ett script är det bra att göra det så robust som möjligt.

"ls -l" brukar skriva ut en "total"-rad först, den kommer att dyka upp först i resultatet från det första uttrycket men sist efter "sort" i det andra uttrycket (om mer än 5 rader syns det inte).
I båda fallen bör den plockas bort med t ex tail: "ls -lrS | tail +2|head -5"
Dito i det andra uttrycket.

Jag skulle också förorda att använda sorteringen som är inbyggd i ls. Rent generellt finns det många sätt att få fram det man vill ha och det är bra att kunna de 20-30 vanligaste kommandona, t ex grep, sed och awk.

Marx Online 301
Postad: 24 nov 21:25 Redigerad: 24 nov 21:28
Laguna skrev:

För mig blir det inte alls samma svar.

Ja, det har du rätt i! Jag borde ha skrivit "ls -lS <sökväg> | head -6"

Programmeraren Online 961
Postad: 24 nov 21:29

Får du inte en rad "Total ..." som första rad då?

Marx Online 301
Postad: 24 nov 21:41
Programmeraren skrev:

Får du inte en rad "Total ..." som första rad då?

Jo, det får jag.

Laguna Online 16910
Postad: 24 nov 22:16

Om filer har storlek 0 så kommer kanske "Total 0" nånstans i mitten.

Dessutom verkar inte filer med samma storlek sorteras i samma ordning för de båda kommandona, men det kanske är odefinierat i båda fallen, jag har inte kollat upp det.

Programmeraren Online 961
Postad: 24 nov 22:22 Redigerad: 24 nov 22:22

Från ls -l kommer "total"-raden först.
sort i det andra uttrycket sorterar på 5:e fältet som inte finns i raden med "total",  den raden kommer då sist.

Laguna Online 16910
Postad: 25 nov 08:12 Redigerad: 25 nov 08:14

ls -l|sort -rn -k5

-rw-r--r-- 1 user eusers 15 Nov 24 20:48 fiff

-rw-r--r-- 1 user eusers  4 Nov 24 20:48 bapa

-rw-r--r-- 1 user eusers  4 Nov 24 20:47 apa

-rw-r--r-- 1 user eusers  3 Nov 24 20:49 ty3

-rw-r--r-- 1 user eusers  3 Nov 24 20:49 ty23

-rw-r--r-- 1 user eusers  3 Nov 24 20:49 ty2

-rw-r--r-- 1 user eusers  3 Nov 24 20:49 ty

total 0

-rw-r--r-- 1 user eusers  0 Nov 24 20:48 6

-rw-r--r-- 1 user eusers  0 Nov 24 20:48 5

-rw-r--r-- 1 user eusers  0 Nov 24 20:48 4

-rw-r--r-- 1 user eusers  0 Nov 24 20:48 3

-rw-r--r-- 1 user eusers  0 Nov 24 20:48 2

-rw-r--r-- 1 user eusers  0 Nov 24 20:48 1

ls -Ssd1 *
ger dig storlek (sorterat) och filnamn och inget 'total'

Om du behöver mer information om varje fil:
ls -Sld1 *

Men jag hade nog bara använt:
ls -Sl | grep -v "^total.*"
eller
ls -Ss | grep -v "^total.*"

Varför dessa istället för t.ex "ls -Ssd1 *"?
För jag hade varit tvungen att tänka efter för att komma ihåg dessa flaggaor och vem komer ihåg att skriva "*"?

Programmeraren Online 961
Postad: 25 nov 13:50 Redigerad: 25 nov 13:51

Blir många detaljer här, t ex är anledningen att "total"-raden hamnar i mitten i Lagunas exempel att han har flera filer av storlek 0 och avsaknaden av fält 5 i "total"-raden tolkas som 0 vid numerisk sort.

Frågan är kanske mer vad Marx fråga gäller?
Den är ställd som "Vad är det för skillnad om jag vill sortera de 5 största filerna i en mapp enligt deras storlekar ..." och som visats är skillnaden relativt liten.
Den mer långtgående tolkningen av frågan är "Vilket är det bästa sättet om jag vill sortera de 5 största filerna i en mapp enligt deras storlekar ...".

Laguna Online 16910
Postad: 25 nov 14:01

Det är också intressant huruvida man bara vill se resultatet på skärmen, eller om det ska bli input till något program. I det första fallet är det inte så kinkigt om det kommer med nånting extra.

Svara Avbryt
Close