විධාන රේඛාවේ නාමාවලියක ප්‍රමාණය ලබා ගන්නේ කෙසේද?


1150

lsවිකල්පයක් සහිත විධානය භාවිතා කරමින් නාමාවලියක ප්‍රමාණය (නාමාවලි සහ උප නාමාවලි අඩංගු) ලබා ගැනීමට මම උත්සාහ කළෙමි l. එය ලිපිගොනු ( ls -l file name) සඳහා වැඩ කරන බව පෙනේ , නමුත් මම නාමාවලියක ප්‍රමාණය ලබා ගැනීමට උත්සාහ කළහොත් (උදාහරණයක් ලෙස ls -l /home), මට ලැබෙන්නේ බයිට් 4096 ක් පමණි, සමස්තයක් වශයෙන් එය වඩා විශාල වුවද.


20
1) තදින් කිවහොත් ඔබට බැහැ. ලිනක්ස් සතුව ඩිරෙක්ටරි ඇත, ෆෝල්ඩර නොවේ. 2) නාමාවලියක ප්‍රමාණය (එය වෙනත් ලිපිගොනු වෙත යොමු කරන විශේෂ ලිපිගොනු රඳවා ගැනීමේ ඉනෝඩයකි) සහ එම නාමාවලියෙහි අන්තර්ගතයේ ප්‍රමාණය අතර වෙනසක් ඇත. අනෙක් අය පෙන්වා දී ඇති පරිදි, du විධානය මඟින් දෙවැන්න සපයයි, එය ඔබට අවශ්‍ය බව පෙනේ.
jamesqf

13
ඔබ අළුත් යැයි පෙනෙන පරිදි, 1130301 වෙනුවට 1.1M වැනි මානව හිතකාමී අංකනයකින් මුද්‍රණය කළ යුතු ලිපිගොනු ප්‍රමාණය ලබා ගැනීම සඳහා -hඔබට -lවිකල්පයට (එනම් ls -lh) එකතු කළ හැකි ප්‍රයෝජනවත් විකල්පය මම පෙන්වා දෙමි. " du -hsඩිරෙක්ටරි පිළිබඳ ඔබේ ප්‍රශ්නයට පිළිතුර ලෙස am සෑම් දුන් විධානයෙහි" මානව-කියවිය හැකි "යන්නෙහි අර්ථය df -hවන අතර, තැටියේ භාවිතා කළ හැකි හා නිදහස් ඉඩ ප්‍රමාණයක් මිනිසාට කියවිය හැකි ප්‍රමාණය පෙන්වන බව ද පෙනේ .
msouth

Answers:


1593

du -sh file_path

පැහැදිලි කිරීම

  • du( d isc u sage) විධානය මඟින් file_path අවකාශය භාවිතා කිරීම තක්සේරු කරයි
  • විකල්ප -sh(වෙතින් man du):

      -s, --summarize
             display only a total for each argument
    
      -h, --human-readable
             print sizes in human readable format (e.g., 1K 234M 2G)
    

    නාමාවලි එකකට වඩා පරීක්ෂා කර මුළු එකතුව බැලීමට, භාවිතා කරන්න du -sch:

      -c, --total
             produce a grand total
    

48

1
find වත්මන් මාර්ගයේ නිශ්චිත උප $ find . -type d -name "node_modules" -prune -exec du -sh {} \;
බහලුම්වල

350

duවිධානය භාවිතා කරන්න :

du -sh -- *

වර්තමාන නාමාවලියෙහි සැඟවී නැති සියලුම නාමාවලි, ලිපිගොනු ආදිය සමුච්චිත තැටි භාවිතය ඔබට කියවිය හැකි ආකෘතියෙන් ලබා දෙනු ඇත.

dfනාමාවලිය අඩංගු ගොනු පද්ධතියේ ඇති නිදහස් ඉඩ දැන ගැනීමට ඔබට විධානය භාවිතා කළ හැකිය :

df -h .

4
du -sh *එම ඩිරයේ ඇති ඕනෑම ලිපිගොනු ඉරකින් ආරම්භ වුවහොත් "නොදන්නා විකල්ප" දෝෂ විසි කිරීමට පටන් ගනී. කිරීමට du -sh -- *
ආරක්ෂිතයි

1
du -sh *සැඟවුණු ෆෝල්ඩර වල මතක භාවිතයන් නොපෙන්වයි
ප්‍රශාන්ත් ප්‍රභාකර සිං

4
du -sh -- * .*dotfiles ඇතුළත් කිරීමට. .gitඋදාහරණයක් ලෙස විශාල නාමාවලියක් ඇතුළත් කිරීමට මෙය ප්‍රයෝජනවත් වේ . විකල්පයක් ලෙස zsh හි ඔබට setopt globdotsපෙරනිමියෙන් ඩොට්ෆයිල් ග්ලෝබ් කළ හැකිය.
cbarrick

1
මොකක්ද මේ කරන්නේ --ද? විකල්ප තර්ක අවසන් කිරීම සඳහා එය ෂෙල් බිල්ට්-ඉන් සඳහා අදාළ වන බව මම දනිමි , නමුත් duඑය ගොඩනංවන ලද එකක් නොවේ. මෙම භාවිතය සඳහා ලේඛනගත කර ඇති බවක් මට නොපෙනේdu : linux.die.net/man/1/du
flow2k

සමහර විට ඔබට -b( --apparent-size) එකතු කිරීමට අවශ්‍ය වනු ඇත
සුදුසුකම්

217

duඔබේ මිතුරා. ඔබට නාමාවලියක මුළු ප්‍රමාණය දැන ගැනීමට අවශ්‍ය නම් ඒ තුළට පැන ධාවනය කරන්න:

du -hs

ඔබ ද දැන ගැනීමට කැමති නම් කුමන උප-ෆෝල්ඩර සඳහා තැටි ඉඩ ප්‍රමාණයක් ගතවේද? ඔබට මෙම විධානය පහත පරිදි දිගු කළ හැකිය:

du -h --max-depth=1 | sort -hr

එමඟින් ඔබට සියලු උප-ෆෝල්ඩරවල ප්‍රමාණය (මට්ටම 1) ලබා දෙනු ඇත. ප්‍රතිදානය වර්ග කරනු ලැබේ (ඉහළින් ඇති විශාලතම ෆෝල්ඩරය).


1
එය ලිනක්ස් හි සමහර (සමහර විට පැරණි?) අනුවාද වල පෙනේ, වර්ග කිරීම සඳහා එච් ස්විචයක් නොමැත, එබැවින් මට සොයාගත හැකි ඊළඟ හොඳම විධානය වන්නේ: du -c --max-deep = 1 | sort -rn
richhallstoke

1
ichrichhallstoke ඔබ ncduගොනු භාවිතා කරන්නේ නම් පෙරනිමියෙන් ප්‍රමාණයෙන් බැස යයි.
ආම්ෆූට්

5
| "ආකාරයක -hr" සඳහා +1
afranques

සඳහා +1 --max-depth. මගේ වර්තමාන නාමාවලියෙහි ෆෝල්ඩරවල ප්‍රමාණය බැලීමට මට අවශ්‍ය විය, සෑම උප බහලුම් සහ ලිපිගොනුම නොවේ. මෙය මගේ ගැටලුව
විසඳීය

77

duයහපත් ප්‍රතිදානයක් ලබා ගැනීම සඳහා ඔබට තර්ක 100 ක් සම්මත කළ යුතු බැවින් භාවිතා කිරීම සංකීර්ණ විය හැකිය. සැඟවුණු ෆෝල්ඩරවල ප්‍රමාණය සොයා ගැනීම ඊටත් වඩා දැඩි ය.

ඔබේ ජීවිතය පහසු කර භාවිතා කරන්නncdu .

ncdu

ඔබට පහසුවෙන් සොයාගත හැකි ෆෝල්ඩර සාරාංශයකට ලැබේ.


35

තවත් සමහරු සඳහන් කර ඇත du, නමුත් මම Ncdu ගැනද සඳහන් කිරීමට කැමැත්තෙමි - එය duඅන්තර්ක්‍රියාකාරිත්වයේ අනුවාදයක් වන අතර ඔබට නාමාවලි ධූරාවලිය කෙලින්ම ගවේෂණය කර උප බහලුම්වල ප්‍රමාණයන් දැක ගත හැකිය.


28

මෙම duවිධානය ගොනු තැටි භාවිතය පෙන්නුම් කරයි.

මෙම -hමානව කියවිය හැකි ස්වරූපෙයන් (උදා, 4K, 5 කට, 3G) හි විකල්පය සංදර්ශන ප්රතිඵල.

du -h (file name)

24

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

ඔබේ උදාහරණයේ දී, ඔබ තනි ගොනුවක ls -l භාවිතා කර ඇති අතර එමඟින් ගොනුවේ සත්‍ය ප්‍රමාණය ආපසු ලැබෙනු ඇත, තැටියේ ප්‍රමාණය නොවේ.

ඔබට සත්‍ය ගොනු ප්‍රමාණය දැන ගැනීමට අවශ්‍ය නම්, -b විකල්පය du වෙත එක් කරන්න.

du -csbh .

ඔව්. මම sdfs භාවිතා කරන අතර එය ගොනු සම්පීඩනය කර අඩු කරයි, එබැවින් එය එතරම් අඩු සංඛ්‍යාවක් වාර්තා කරන්නේ මන්දැයි මට සිතාගත නොහැකි විය. Ls සහිත ලිපිගොනු වල සත්‍ය ප්‍රමාණය සොයා ගැනීමෙන් සොයාගත හැකිය: du -b
රයන් ෂිලිංටන්

17

පුද්ගලිකව මම හිතන්නේ ඔබට භාවිතා කිරීමට අවශ්‍ය නැතිනම් මෙය වඩාත් සුදුසු බවයි ncdu

# du -sh ./*

16
df -h .; du -sh -- * | sort -hr

වත්මන් ධාවකයේ ඔබ කොපමණ තැටියේ ඉඩ ප්‍රමාණයක් ඉතිරි කර ඇත්ද යන්න පෙන්වන අතර ඉන්පසු සෑම ගොනුවක්ම / නාමාවලියක්ම කොපමණ ප්‍රමාණයක් ගතවේදැයි ඔබට කියනු ඇත. උදා:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2       206G  167G   29G  86% /
115M    node_modules
2.1M    examples
68K     src
4.0K    webpack.config.js
4.0K    README.md
4.0K    package.json

FYI, එය තැටියේ ප්‍රමාණය වාර්තා කරන බව පෙනේ. එනම්, එය බොහෝ විට ළඟම ඇති 4KB වෙත පෑඩ් කරනු ඇත.
mpen


10

වත්මන් නාමාවලිය යටතේ ඇති සියලුම ලිපිගොනු පුනරාවර්තනයෙන් සොයාගෙන ඒවායේ ප්‍රමාණය සාරාංශ කරන්න:

find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'

-not -type dසාමාන්‍ය ලිපිගොනු ( -type f) වල ප්‍රමාණයන් පමණක් නොව සංකේතාත්මක සබැඳි ප්‍රමාණයන් ද එකතු කිරීමට මම භාවිතා කරමි .
anton_rh

මෙය විශිෂ්ටයි, මන්ද ඔබට ගොනු ගබඩා කිරීමට අවශ්‍ය පොදු කාර්යය නොලැබෙන නමුත් ලිපිගොනු වල ප්‍රමාණය පමණක් වේ.
bballdave025

10

මෙන්න ඔබේ .bash_aliases සඳහා ශ්‍රිතයක්

# du with mount exclude and sort
function dusort () {
    DIR=$(echo $1 | sed 's#\/$##')
    du -scxh $(mount | awk '{print $3}' | sort | uniq \
     | sed 's#/# --  exclude=/#') $DIR/* | sort -h
}

නියැදි ප්‍රතිදානය:

$ dusort /
...
0       /mnt  
0       /sbin
0       /srv
4,0K    /tmp
728K    /home
23M     /etc
169M    /boot  
528M    /root
1,4G    /usr
3,3G    /var
4,3G    /opt
9,6G    total

උපසිරැසි සඳහා:

$ dusort .
$ dusort /var/log/

9

තවත් එක් ප්‍රභේදයක්:

du -h --max-dep=1

7

මෙන්න වැඩ කරන POSIX ස්ක්‍රිප්ට් එකක්:

  • ගොනුවක්
  • ලිපිගොනු
  • නාමාවලියකි
  • නාමාවලි
ls -A -R -g -o "$@" | awk '{n1 += $3} END {print n1}'

6

ඔයාට පාවිච්චි කරන්න පුළුවන්

du -sh directory/

හා

du -sh filename

ෆෝල්ඩරය හෝ ගොනුව සතුව ඇති අවකාශය දැන ගැනීමට.

df -h

මිනිස් කියවිය හැකි ආකෘතියෙන් තැටි භාවිතය පෙන්වනු ඇත -h එය කරයි.

ගුයි පාදක වැඩසටහනක් ද Disk Usage Analyzerඇත.


6

duනාමාවලියෙහි ඇති සියලුම ලිපිගොනු වල ප්‍රමාණයට වඩා සාමාන්‍යයෙන් විශාල වන ඩිරෙක්ටරියක් මාධ්‍යයේ ඇති ඉඩ මුද්‍රණය කරන බව සලකන්න , මන්ද duනාමාවලිය අනුකූලව සංවිධානය කිරීම සඳහා මාධ්‍යයේ ගබඩා කර ඇති සියලුම සහායක තොරතුරු ප්‍රමාණය සැලකිල්ලට ගනී. ගොනු පද්ධති ආකෘතිය සමඟ.

ගොනු පද්ධතිය සම්පීඩනය duකළ හැකි නම් , සියලු ලිපිගොනු වල මුළු ප්‍රමාණයට වඩා කුඩා සංඛ්‍යාවක් ප්‍රතිදානය කළ හැකිය, මන්ද ගොනු පද්ධතිය අභ්‍යන්තරව සම්පීඩනය කළ හැකි බැවින් ඒවා අඩංගු සම්පීඩිත තොරතුරුවලට වඩා මාධ්‍යයට අඩු ඉඩක් ලබා ගනී. විරල ලිපිගොනු තිබේ නම් එය එසේම වේ.

ඩිරෙක්ටරියේ දෘඩ සබැඳි තිබේ නම්, duකුඩා අගයක් ද මුද්‍රණය කළ හැකිය, මන්ද ඩිරෙක්ටරියේ විවිධ ගොනු කිහිපයක් එකම දත්ත මාධ්‍යයේ සඳහන් කරයි.

නාමාවලියෙහි ඇති සියලුම ලිපිගොනු වල සෘජු මුළු ප්‍රමාණය ලබා ගැනීම සඳහා, පහත දැක්වෙන එක්-පේළි ෂෙල් ප්‍රකාශනය භාවිතා කළ හැකිය (GNU පද්ධතියක් උපකල්පනය කරමින්):

find . ! -type d -print0 | xargs -r0 stat -c %s | paste -sd+ - | bc

හෝ ඊටත් වඩා කෙටි:

find . ! -type d -printf '%s\n' | paste -sd+ - | bc

එය නාමාවලියෙහි ඇති සියලුම නාමාවලි නොවන ගොනු වල ප්‍රමාණයන් (සහ එහි උප බහලුම් පුනරාවර්තන ලෙස) එකින් එක සාරාංශ කරයි. සිම්ලින්ක් සඳහා, එය සිම්ලින්ක්හි ප්‍රමාණය වාර්තා කරන බව සලකන්න (සිම්ලින්ක් පෙන්වා ඇති ගොනුවේ නොවේ).

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.