Jag är helt grön på Linux/Ubuntu och det känns som att jag sökt igenom hela internet utan att hitta svar på min fråga.
Jag kör Ubuntu 18.04.3 LTS. Jag har ungefär 10 mappar som jag vill veta den exakta storleken på i byte (inte storleken på disken, utan den faktiska storleken).
Jag använder
du -b --apparent-size
Det jag insett i jakten på detta är att om jag kollar storleken på en mapp, är den alltid större än summan av filerna i mappen. För att ta ett enkelt exempel:
Jag skapar en tom mapp. Den är 0 byte. Jag skapar en tom textfil i mappen. Textilen är 2 byte. Mappen är nu 146 byte.
Vad beror detta på? Kan jag på något sätt få veta den exakta storleken på innehållet i en mapp? Problemet är att mapparna jag ska kolla har innehåller tusentals andra mappar/filer, så det är inte rimligt att gå igenom varje mapp manuellt.
En av de verkliga mapparna jag vill undersöka innehåller 4414 filer (inga ytterligare mappar):
Kollar jag samma mapp i Windows (högerklick > Egenskaper) rapporteras "Storlek" som den exakta summan av hela mappens innehåll, alltså den andra siffran ovan.
@Ande: Det kan bero på klusterstorlek på disken. Hade textfilen varit 4 byte hade det ändå visat som 146 byte.
Är filen 147 bytes så allokeras 2 kluster a 146 (om det nu är klusterstorleken) om du är med mig och jag inte är helt ute och cyklar?
@Ande: Det kan bero på klusterstorlek på disken. Hade textfilen varit 4 byte hade det ändå visat som 146 byte.
Är filen 147 bytes så allokeras 2 kluster a 146 (om det nu är klusterstorleken) om du är med mig och jag inte är helt ute och cyklar?
Informationen om filer tar upp plats i en mapp.
Så de där 146 bytes du ser för en tom fil är antagligen sådant som filnamn, datum filen är skapad, m.m.
Kommandot du inkluderar inte bara storleken på de ingående filerna, utan även storleken på själva mapparna när du har en mapp som argument.
Informationen om filer tar upp plats i en mapp.
Så de där 146 bytes du ser för en tom fil är antagligen sådant som filnamn, datum filen är skapad, m.m.
Kommandot du inkluderar inte bara storleken på de ingående filerna, utan även storleken på själva mapparna när du har en mapp som argument.
@Ande: jag tror att exv sum (kasta bort checksumman) och awk skulle kunna fixa biffen.
--
stefan@asus:/tmp/testmapp$ find /tmp -type f -ls|awk 'BEGIN { sum=0 } /[1-9][0-9]*.*/ { sum=sum+$7 } END { print sum }'
find: ‘/tmp/pulse-PKdhtXMmr18n’: Åtkomst nekas
find: ‘/tmp/fthv-root’: Åtkomst nekas
find: ‘/tmp/systemd-private-f384b23ef007494383d8bc2c2f7aac07-ntp.service-Ghp2sK’: Åtkomst nekas
find: ‘/tmp/systemd-private-f384b23ef007494383d8bc2c2f7aac07-colord.service-vTZgwZ’: Åtkomst nekas
find: ‘/tmp/systemd-private-f384b23ef007494383d8bc2c2f7aac07-upower.service-JjjLjK’: Åtkomst nekas
21857784
stefan@asus:/tmp/testmapp$
--
utan sum utan använder '-ls' flaggan till find.
Vill du summera filer i olika mappar men orkar inte skriva in dem så är
find någonstans någonstans2 -type d och skalets '$( )' operator dina vänner.