සාරාංශගත ඩිරෙක්ටරි සහ ඒවායේ උප බහලුම් ලබා ගන්නේ කෙසේද?


321

ලිනක්ස් ගොනු පද්ධතියක එක් එක් නාමාවලියෙහි ප්‍රමාණය ලබා ගැනීමට මට අවශ්‍ය යැයි කියමු. මම භාවිතා කරන විට ls -laෆෝල්ඩරවල සාරාංශගත ප්‍රමාණය මට නොලැබේ.

මා භාවිතා කරන්නේ නම්, dfසවිකර ඇති සෑම ගොනු පද්ධතියකම ප්‍රමාණය මට ලැබේ, නමුත් එය මට උදව් නොකරයි. හා සමග duමම එක් එක් උප බහලුම ප්රමාණය හා මුළු ගොනු පද්ධතියේ සාරාංශයක් ලබා ගන්න.

නමුත් මට අවශ්‍ය වන්නේ ගොනු පද්ධතියේ ROOT ෆෝල්ඩරය තුළ එක් එක් නාමාවලියෙහි සාරාංශගත ප්‍රමාණය පමණි. එය සාක්ෂාත් කර ගැනීමට කිසියම් විධානයක් තිබේද?


මෙම --totalධජය මට ප්රයෝජනවත් වුණා. උදා du -sh --total applications/*. askubuntu.com/a/465436/48214
රයන්

Answers:


458

මෙය ඔබ සොයන දේ කරයි:

du -sh /*

මෙයින් අදහස් කරන්නේ කුමක්ද:

  • -s එක් එක් විධාන රේඛා පරාමිතිය සඳහා එකතුව පමණක් ලබා දීමට.
  • -hමිනිස් කියවිය හැකි උපසර්ග Mසඳහා මෙගාබයිට් සහ Gගිගාබයිට් සඳහා (විකල්ප).
  • /*තුළ ඇති සියලුම නාමාවලි (සහ ලිපිගොනු) වෙත විහිදේ /.

    සටහන: dotfiles ඇතුළත් නොවේ; ධාවනය shopt -s dotglobද එම ඇතුළත් කිරීමට.

ප්‍රමාණය අනුව වර්ග කිරීම ද ප්‍රයෝජනවත් වේ:

du -sh /* | sort -h

මෙහි:

  • -hsortමිනිසාට කියවිය හැකි උපසර්ග නිවැරදිව අර්ථ නිරූපණය කිරීම සහතික කරයි .

9
ඔබට මූල ඩිරෙක්ටරියේ තිත්-නාමාවලි තිබේ නම්, shopt -s dotglobඒවා ගණන් කිරීමට ඇතුළත් කළ හැකිය .
පිලිප්

10
එය ඉතා ප්‍රයෝජනවත් බැවින් එය සරල වන අතර ඒ වෙනුවට ඔබට අවශ්‍ය මාර්ගය තැබිය හැකිය /*, උදා: ./වත්මන් නාමාවලිය ./*සඳහා හෝ වත්මන් නාමාවලියෙහි එක් එක් අයිතමය සඳහා.
psur

4
@psur හෝ ඔබට උප ෆෝල්ඩර ./*/පමණක් ලබා ගැනීමට භාවිතා කළ හැකි අතර සියලු අයිතම නොවේ
සකස් කරන්න

9
වර්ග කළ අනුවාදය:du -sh /* | sort -h
Vu Anh

3
@ c1phr ඔබ sortසතුව නොමැති නම් -h, ඔබ එය ද අතහැර දැමිය යුතුය, එසේ නොමැතිනම් duවර්ග කිරීම කිලෝ / මෙගා / ගිගාබයිට් මිශ්‍ර කරයි. du -s /* | sort -nr.
තෝමස්

84

මට බොහෝ විට විශාලතම නාමාවලි සොයා ගැනීමට අවශ්‍යය, එබැවින් මම මෙය කරන විශාලතම ඩිරර් 20 අඩංගු වර්ග කළ ලැයිස්තුවක් ලබා ගැනීමට:

du -m /some/path | sort -nr | head -n 20

මෙම අවස්ථාවේ දී ප්‍රමාණය මෙගාබයිට් වලින් වාර්තා වේ.


13
එය වඩාත් කියවිය හැකි ක්‍රමයක් මෙන්න du -sh / some / path | වර්ග කිරීම -hr | head -n 20
Xedecimal

7
@Xedecima h භාවිතා කිරීමේ ගැටලුව වන්නේ වර්ග කිරීම විවිධ ප්‍රමාණ හැසිරවිය යුතු ආකාරය නොදැන සිටීමයි. උදාහරණයක් ලෙස 268K 255M ට වඩා ඉහළින් වර්ග කර ඇති අතර දෙකම 2.7G ට වඩා ඉහළින් වර්ග කර ඇත
ක්‍රිසන්

5
'වර්ග කිරීම' විධානය පිළිබඳ -h (මානව කියවිය හැකි) තර්කය මෙම අගයන් නිසි ලෙස කියවිය යුතුය. ඩු-එච් ධජය අපනයනය කරනවා වගේ. ඔබ ධාවනය කරන දේ අනුව මම අනුමාන කරමි.
Xedecimal

1
උබුන්ටු 16.04 හි වැඩ කරයි. ලස්සන ඉඟියක්.
SDsolar

1
sudo du -haxt 1G / | වර්ග කිරීම -hr | head -30
විචල්‍ය

24

මම ඒ සඳහා Ncdu භාවිතා කිරීමට කැමතියි , ඔබට කර්සරය භාවිතා කර එය හොඳින් ක්‍රියාත්මක වන නාමාවලි ව්‍යුහය හරහා සැරිසැරීමට සහ පහළට විදීමට හැකිය.


1
නියමයි. මූල පද: du ncurses හමුවෙයි. bනාමාවලියෙහි කවචයකට වැටීමට ඔබට භාවිතා කළ හැකිය .
සිරෝ සැන්ටිලි 冠状 病毒 审查 六四 事件 法轮功

13

පවතින පිළිතුරු ඉතා ප්‍රයෝජනවත් වේ, සමහර විට සමහර ආරම්භකයින් (මා වැනි) මෙය ද ප්‍රයෝජනවත් වනු ඇත.

  1. ඉතා මූලික පුඩුවක්, නමුත් මට නම් මෙය වෙනත් ප්‍රමාණයේ මෙහෙයුම් සඳහා හොඳ ආරම්භයක් විය:

    for each in $(ls) ; do du -hs "$each" ; done
    
  2. පළමු පිළිතුරට බොහෝ සෙයින් සමාන වන අතර 1 ට සමාන ප්‍රති result ලයකි.), නමුත් උප බහලුමක නම් * සිට ./* දක්වා වෙනස තේරුම් ගැනීමට මට යම් කාලයක් ගත විය:

    du -sh ./*
    

for each\033[ෆෝල්ඩර ලැයිස්තුවට කොන්සෝල අක්‍ෂර (උදා ) එකතු කරන බැවින් එය ක්‍රියා නොකරයි
යන්ත්‍රෝපකරණ

ඔබ අදහස් කරන්නේ කුමක්දැයි විශ්වාස නැත. මම මෙය නිතරම භාවිතා කරමි, මට හොඳින් වැඩ කරයි.
මාටින්

ඔබේ විධානය ආරම්භ කිරීමට උත්සාහ කරන්න for each. එය ක්‍රියා නොකරනු ඇත
යන්ත්‍රෝපකරණ

මම මෙහි ලියා ඇති ආකාරයටම විධානය ක්‍රියාත්මක කරමි. එක් එක් සඳහා ආරම්භ. කටයුතු.
මාටින්

9

පහත සඳහන් duආයාචනය BSD පද්ධති මත ක්‍රියා කළ යුතුය:

du -d 1 /

2
මගේ du(උබුන්ටු 10.4) -dවිකල්පයක් නොමැත. ඔබ සිටින්නේ කුමන පද්ධතියේද?
තෝමස්

1
මගේ openSUSE හි එයට -d විකල්පයක් නොමැත :(
2ndkauboy

1
හරි, එය BSD විකල්පයක් පමණි (මම OS X හි සිටිමි).
පිලිප්

1
BSD / * NIX හි දකුණු අතේ ගෙන යා හැකි විකල්ප සංයෝජනය වේ du -sk /*. මම ගොඩක් -kදේවල් වලට වෛර කරනවා . ලිනක්ස් -hමුළුමනින්ම පාෂාණ.
Dummy00001

1
වෙනත් පද්ධති වල, එහි--max-depth
විෂ්ණු කුමාර්

5

මෙය පහසු නැත. මෙම duවිධානය දර්ශන ගොනු සහ ෆෝල්ඩර (පෙරනිමි) හෝ ඔබ විධාන රේඛාව (විකල්පය මත නියම සියලු භාණ්ඩ පමණක් ප්රමාණ වත් -s).

ලිනක්ස් හි කියවිය හැකි ප්‍රමාණයන් සමඟ වර්ග කර ඇති විශාලතම අයිතම (ලිපිගොනු සහ ෆෝල්ඩර) ලබා ගැනීම සඳහා:

du -h | sort -h

මෙය කුඩා ලිපිගොනු ටොන් ගණනක ඔබව වළලනු ඇත. ඔබට ඒවායින් මිදිය හැකිය --threshold(මගේ උදාහරණයේ 1 MB):

du --threshold=1M -h | sort -h

මෙම විධානයේ වාසිය නම් එයට සැඟවුණු තිත් ෆෝල්ඩර (ආරම්භ වන ෆෝල්ඩර .) ඇතුළත් වීමයි.

ඔබට සැබවින්ම ෆෝල්ඩර අවශ්‍ය නම්, ඔබ භාවිතා findකළ යුතු නමුත් මෙය ඉතා මන්දගාමී විය හැකි බැවින් duබොහෝ ෆෝල්ඩර කිහිප වතාවක් පරිලෝකනය කිරීමට සිදුවනු ඇත:

find . -type d -print0 | sort -z | xargs --null -I '{}' du -sh '{}' | sort -h

2
--threshold ^^^ මෙම විකල්පය ලිනක්ස්
පොඩාරොක්

2
odpodarok එය OpenSUSE 13.2 ලිනක්ස් වලින් ලබා ගත හැකිය. ඔබේ බෙදාහැරීමේ වඩාත් නවතම අනුවාදයක් සොයා ගැනීමට උත්සාහ කරන්න හෝ පැකේජයේ නවතම අනුවාදයක් ඔබම සම්පාදනය කරන්න.
ආරොන් ඩිගුල්ලා

1
එය උබුන්ටු එල්ටීඑස් (14.04) මත ක්‍රියා නොකරයි. එය නවතම එකකි))
පොඩාරොක්

1
odpodarok GNU coreutils හි කුමන අනුවාදයද? පතල 8.24 කි.
ආරොන් ඩිගුල්ලා

2
හැඹිලිගත කිරීම නරක යෙදුමක් විය හැකිය. මම මේ වරායේ superuser.com/a/597173/121352 හි සිදු කළ දෙයක් ගැන සිතමින් සිටියෙමු. එහිදී අපි තැටි අන්තර්ගතය සිතියම්ගත කිරීමකට වරක් පරිලෝකනය කර නැවත තැටියට පහර දෙනවාට වඩා එම සිතියමෙන් දත්ත භාවිතා කරමු.
හෙනස්

2

මතක තබා ගන්න, ඔබට duවිවිධ පද්ධති / යන්ත්‍ර සමඟ නාමාවලි සංසන්දනය කළ නොහැකි බවට වග බලා ගන්න, දෙකම ගොනු පද්ධතියේ එකම අවහිරතා බෙදා ගනී. ඔබ සමහර ලිපිගොනු ලිනක්ස් යන්ත්‍රයකින් නාස් වෙත rsync කළහොත් ඔබට සමමුහුර්ත නාමාවලිය තනිවම සංසන්දනය කිරීමට අවශ්‍ය නම් මෙය ගණන් ගත හැකිය. duවිවිධ අවහිර කිරීම් නිසා ඔබට විවිධ ප්‍රති results ල ලබා ගත හැකිය ....


1

ඔබට xdiskusage පරීක්ෂා කිරීමට අවශ්‍ය විය හැකිය . ඔබට එකම තොරතුරු ලබා දෙනු ඇත, නමුත් ප්‍රස්ථාරිකව පෙන්වනු ලැබේ, ප්ලස් පහළට සරඹ කිරීමට ඉඩ දෙයි (ඉතා ප්‍රයෝජනවත්). KDE සහ වින්ඩෝස් සඳහා වෙනත් සමාන උපයෝගිතා තිබේ.


1

ඔබට lsසමගාමීව භාවිතා කළ හැකිය awk:

ls -al * | awk 'BEGIN {tot=0;} {tot = tot + $5;} END {printf ("%.2fMb\n",tot/1024/1024);}'

ප්‍රතිදානය lsනල මාර්ගයට නංවා ඇත awk. awkදත්ත සැකසීම ආරම්භ කරයි. සම්මත පරිසීමකය යනු අවකාශයයි. එකතුව විචල්‍යය totශුන්‍යයට ආරම්භ වේ; ප්‍රතිදානය කරන ලද එක් එක් පේළිය / පේළිය සඳහා පහත ප්‍රකාශය ක්‍රියාත්මක වේ ls. එය හුදෙක් totප්‍රමාණය සමඟ වැඩි වේ. $5පස්වන තීරුව (ප්‍රතිදානය කරන ලද්දේ ls) යන්නයි. අවසානයේදී අපි (1024 * 1024) බෙදන්නේ මෙගාබයිට් එකතුවකටය.

ඔබ මෙය ස්ක්‍රිප්ටයක් හෝ ශ්‍රිතයක් බවට පරිවර්තනය කරන්නේ නම් (.bashrc) ගොනු වර්ග වලට අනුව ඔබට සමහර ඩිරෙක්ටරිවල අනු කාණ්ඩවල ප්‍රමාණය ලබා ගැනීමටද එය භාවිතා කළ හැකිය.

ඔබට පද්ධති පුළුල් තොරතුරු අවශ්‍ය නම්, kdirstatප්‍රයෝජනවත් විය හැකිය!


1
යමෙකුට මෙම උදාහරණය පුළුල් කළ හැකි බවත්, “ගොනුවලට අනුව ඇතැම් නාමාවලිවල ප්‍රමාණය ලබා ගැනීම” වැනි උපක්‍රම කළ හැකි බවත් මම එකඟ වෙමි. එය හොඳ ආරම්භක ස්ථානයක් ලෙස පෙනේ. එසේ වුවද මෙම විසඳුම මුල සිටම දෝෂ සහිතය. මෙම ක්‍රමය භාවිතා කිරීමට කැමති සෑම පරිශීලකයෙකුටම මෙම ප්‍රශ්නයට පිළිතුරු සහ අදහස් කියවීමට මෙන්ම එහි සම්බන්ධිත ලිපියද නිර්දේශ කරමි . ඔබට එය කිසිසේත් කළ නොහැකි යැයි මම නොකියමි. සීමාවන් දැනගන්න, එපමණයි.
කමිල් මැකියෝරොව්ස්කි
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.