Vraag Hoe bepaal ik de totale grootte van een map (map) op de opdrachtregel?


Is er een eenvoudige opdracht om de totale aggregaatgrootte (schijfgebruik) van alle bestanden in een map (map) weer te geven?

Ik heb deze geprobeerd, en ze doen niet wat ik wil:

  • ls -l, die alleen de grootte van de afzonderlijke bestanden in een map weergeeft, noch
  • df -h, die alleen de vrije en gebruikte ruimte op mijn schijven weergeeft.

682
2017-08-05 18:20


oorsprong


Verwant: Hoe kan ik recursieve bestandsgroottes van bestanden en mappen in een map weergeven? - Peter Mortensen
Cross-site duplicate: Hoe krijg ik de grootte van een map op de opdrachtregel? - Peter Mortensen


antwoorden:


Het bevel du "vat het schijfgebruik van elk BESTAND samen, recursief voor mappen," bijv.

du -hs /path/to/directory
  • -h is om de nummers "voor mensen leesbaar" te krijgen, b.v. krijgen 140M in plaats van 143260 (grootte in KBytes)
  • -s is voor samenvatting (anders krijg je niet alleen de grootte van de map, maar ook voor alles in de map apart)

Zoals je gebruikt -h je kunt de menselijke leesbare waarden sorteren met

du -sh | sort -h

De -h vlag op sort houdt rekening met de waarden voor "Menselijk leesbaar".


Als u wilt vermijden dat alle bestanden en mappen recursief worden vermeld, kunt u de --max-depth parameter om te beperken hoeveel items worden weergegeven. Meestal, --max-depth=1

du -sh --max-depth=1 /path/to/directory

1086
2017-08-05 18:27



respect voor die extra mijl. :) - myusuf3
ik gebruik du -sh of DOOSH als een manier om het te onthouden (OPMERKING: de opdracht is hetzelfde, alleen de organisatie van commandolijnvlaggen voor geheugendoeleinden) - Marco Ceppi♦
Er is een handige optie om de -eenvoudige-grootte te noemen. Het kan worden gebruikt om de werkelijke grootte van een bestand of map te vinden (in tegenstelling tot de footprint op de schijf), een tekstbestand met slechts 4 tekens zal ongeveer 6 bytes innemen, maar zal nog steeds worden weergegeven als ~ 4K in beslag nemen in een normale du-sh output. Als u echter de optie -dimensionaal-formaat passeert, is de uitvoer 6. man du says: - zichtbare schijnmaten in zichtbare grootte in plaats van schijfgebruik; hoewel de schijnbare grootte meestal kleiner is, kan deze groter zijn vanwege gaten in ('sparse') bestanden, interne fragmentatie, indirecte blokken - Hopping Bunny
Dit werkt ook voor OS X! Bedankt, ik was echt op zoek naar een manier om bestanden op te ruimen, zowel op mijn lokale computer als op mijn server, maar geautomatiseerde methoden leken niet te werken. Dus ik rende du -hs * en ging naar de grootste map en ontdekte welke bestanden zo groot waren ... Dit is zo'n goede methode, en het beste is dat je niets hoeft te installeren! Zeker mijn upvote verdiend - Dev
@BandaMuhammadAlHelal Ik denk dat er twee redenen zijn: afronding (du heeft enigszins eigenaardige afronding, laat geen decimalen zien als de waarde meer dan één cijfer in de gekozen eenheid heeft), en de klassieke 1024 voorvoegsel 1000 kwestie. du heeft een optie -B (of --block-size) om de eenheden te wijzigen waarin het waarden weergeeft, of u zou kunnen gebruiken -b in plaats van -h om de "onbewerkte" waarde in bytes te krijgen. - Marcel Stimberg


Onlangs vond ik een geweldige, op ncurses gebaseerde interactieve tool, die je snel een overzicht geeft over directorygroottes. Al jaren naar dat soort gereedschap gezocht.

  • snel doorzoeken door bestandshiërarchie
  • je kunt b.v. enorme tijdelijke bestanden vanuit de tool
  • extreem snel

Zie het als baobabboom voor de opdrachtregel:

apt-get install ncdu

139
2017-10-11 07:24



Dit is absoluut fantastisch! Zoals DaisyDisk voor OSX - subZero
Ongelooflijke tool! - Ted
ncdu is geweldig! Na het installeren, doe dit gewoon ncdu /. Je zult snel de grootste bestanden op het systeem vinden. Druk ook op h terwijl in de console-interface van ncdu. Het heeft zeer nuttige snelkoppelingen - vlad-ardelean
Geweldige tool! Bedankt voor de heads-up! - kstratis


Dit vindt de grootte recursief en plaatst deze naast elke mapnaam, samen met de totale grootte onderaan, alles in het menselijke formaat

du -hsc *

43
2017-12-19 16:32





Genieten!

du foldername

Meer informatie over die opdracht hier 


14
2017-08-05 18:22





tree is een ander nuttig commando voor deze taak:

Installeer het gewoon via sudo apt-get install tree en typ het volgende:

tree --du -h /path/to/directory
...
...

33.7M used in 0 directories, 25 files

Van man boom:

-h    Print  the size of each file but in a more human readable way, e.g. appending a size letter for kilo‐
      bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).

--du  For each directory report its size as the accumulation of sizes of all its files and  sub-directories
      (and their files, and so on). The total amount of used space is also given in the final report (like
      the 'du -c' command.)

7
2018-01-27 12:37





Hieronder is wat ik gebruik om het totaal, de map en de bestandsgrootte af te drukken:

$ du -sch /home/vivek/* | sort -rh

Details

 ------------------------------------------------------------
   -c, --total
          produce a grand total
   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)
   -s, --summarize
          display only a total for each argument
 -------------------------------------------------------------
   -h, --human-numeric-sort
          compare human readable numbers (e.g., 2K 1G)
   -r, --reverse
          reverse the result of comparisons

uitgang

 70M    total
 69M    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib
992K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results
292K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target
 52K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files

5
2017-10-06 14:05





De antwoorden hebben het duidelijk gemaakt dat du is de tool om de totale grootte van een map te vinden. Er zijn echter een aantal factoren waarmee u rekening moet houden:

  • Af en toe, du output kan misleidend zijn omdat het de door het bestandssysteem toegewezen ruimte rapporteert, wat kan verschillen van de som van de grootte van de afzonderlijke bestanden. Doorgaans wijst het bestandssysteem 4096 bytes toe voor een bestand, zelfs als u er maar één karakter in heeft opgeslagen!

  • Uitgangsverschillen door vermogen van 2 en vermogen van 10 eenheden. De -h overschakelen naar du verdeelt het aantal bytes met 2 ^ 10 (1024), 2 ^ 20 (1048576) enz. om een ​​door mensen leesbare uitvoer te geven. Veel mensen kunnen meer gewend zijn aan het zien van machten van 10 (bijvoorbeeld 1K = 1000, 1M = 1000000) en worden verrast door het resultaat.

Ga als volgt te werk om de totale som van de grootten van alle bestanden in een map in bytes te vinden:

find <dir> -ls | awk '{sum += $7} END {print sum}'

Voorbeeld:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += $7} END {print sum}'
249008169

3
2018-02-04 18:56



De find-ls-awk retourneert een verkeerde waarde voor grote mappen # 1. Voor nieuwere awk kunt u toevoegen --bignum of -M ; als dat geen optie is gebruik find . -ls | tr -s ' '|cut -d' ' -f 7| paste -sd+ |bc  # 2. - goozez
Als krachten van 2 worden gebruikt, is er een probleem --si optie: "like -h, maar gebruik de bevoegdheden van 1000 niet 1024" - muru


Gebruik de onderstaande tabel voor alleen de directorygrootte in een leesbaar formaat:

du -hs directoryname

Dit staat waarschijnlijk niet in de juiste sectie, maar vanaf de opdrachtregel kunt u het volgende proberen:

ls -sh filename

De -sis de grootte en de -h is leesbaar voor de mens.

Gebruik -l laten zien ls lijst, zoals hieronder:

ls -shl

1
2018-05-12 09:09