විධාන රේඛාවෙන් නාමාවලියක (ෆෝල්ඩරයේ) මුළු ප්‍රමාණය තීරණය කරන්නේ කෙසේද?


847

නාමාවලියක (ෆෝල්ඩරයක) සියලුම ලිපිගොනු වල සමස්ත ප්‍රමාණය (තැටි භාවිතය) පෙන්වීමට සරල විධානයක් තිබේද?

මම මේවා අත්හදා බැලුවෙමි, ඔවුන් මට අවශ්‍ය දේ නොකරයි:

  • ls -l, එය ඩිරෙක්ටරියක් තුළ ඇති තනි ගොනු වල ප්‍රමාණය පමණක් පෙන්වයි
  • df -h, එය මගේ තැටිවල නිදහස් හා භාවිතා කළ ඉඩ පමණක් පෙන්වයි.



BTRFS වැනි CoW ගොනු පද්ධතියේ ශුන්‍ය හැඟීමක් ඇති කළ හැකි බව මිත්‍රශීලී මතක් කිරීම.
val පවසන්නේ

Answers:


1362

විධානය du"එක් එක් ගොනුවේ තැටි භාවිතය සාරාංශ කරයි, නාමාවලි සඳහා පුනරාවර්තනය වේ," උදා.

du -hs /path/to/directory
  • -hයනු "මානව කියවිය හැකි" සංඛ්‍යා ලබා ගැනීමයි, උදා 140Mවෙනුවට ලබා ගන්න 143260(ප්‍රමාණය KBytes වලින්)
  • -sසාරාංශයක් සඳහා (නැත්නම් ඔබ එම ෆෝල්ඩරය ප්රමාණය පමණක් නොව, සියලු දේ සඳහා පමණක් නොව කරන්නම් දී ෆෝල්ඩරය, ෙවන් ෙවන් වශෙයන්)

ඔබ භාවිතා කරන විට ඔබට -hකියවිය හැකි මානව අගයන් වර්ග කළ හැකිය

du -h | sort -h

මෙම -hධජ sort"මානව කියවිය නොහැකි" ප්රමාණය වටිනාකම් සලකා බලනු ඇත.


සියලුම ලිපිගොනු සහ නාමාවලි පුනරාවර්තන ලෙස ලැයිස්තුගත කිරීමෙන් වළක්වා ගැනීමට අවශ්‍ය නම්, --max-depthඅයිතම ගණන පෙන්වීම සීමා කිරීමට ඔබට පරාමිතිය සැපයිය හැකිය . බොහෝ විට,--max-depth=1

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

9
අමතර සැතපුමක් යාමට ගෞරව කිරීම. :)
myusuf3

101
du -shඑය මතක තබා ගැනීමේ ක්‍රමයක් ලෙස මම භාවිතා කරමි හෝ කරන්න (සටහන: විධානය එක හා සමානයි, මතක අරමුණු සඳහා විධාන රේඛා සංවිධානය කිරීම පමණි)
මාකෝ සෙපී

3
- Apparent-size ලෙස හැඳින්වෙන ඩු සඳහා ප්‍රයෝජනවත් විකල්පයක් ඇත. ගොනුවක හෝ නාමාවලියක සත්‍ය ප්‍රමාණය සොයා ගැනීමට එය භාවිතා කළ හැකිය (තැටියේ එහි අඩිපාරට පටහැනිව) උදා., අක්ෂර 4 ක් සහිත පෙළ ගොනුවක් බයිට් 6 ක් පමණ වාසය කරයි, නමුත් තවමත් K 4K ක් ගතවන බව පෙන්වයි නිත්‍ය du -sh ප්‍රතිදානය. කෙසේ වෙතත්, ඔබ --apparent-size විකල්පය සමත් වුවහොත්, ප්‍රතිදානය 6 ක් වනු ඇත. Man du පවසයි: - තැටි භාවිතයට වඩා පැහැදිලි ප්‍රමාණයේ මුද්‍රිත දෘශ්‍යමාන ප්‍රමාණ; පෙනෙන ප්‍රමාණය සාමාන්‍යයෙන් කුඩා වුවද, ('විරල') ලිපිගොනු වල සිදුරු, අභ්‍යන්තර ඛණ්ඩනය, වක්‍ර කොටස් නිසා එය විශාල විය හැකිය
හොප් බනී

4
මෙය OS X සඳහාද ක්‍රියා කරයි! ස්තූතියි, මම ඇත්ත වශයෙන්ම මගේ දේශීය යන්ත්‍රයේ සහ මගේ සේවාදායකයේ ලිපිගොනු ඉවත් කිරීමට ක්‍රමයක් සොයමින් සිටියෙමි, නමුත් ස්වයංක්‍රීය ක්‍රම ක්‍රියාත්මක නොවන බව පෙනෙන්නට තිබුණි. ඉතින්, මම දුව du -hs *ගොස් විශාලතම ඩිරෙක්ටරියට ගොස් කුමන ලිපිගොනු විශාලදැයි සොයා බැලුවෙමි ... මෙය එතරම් හොඳ ක්‍රමයක් වන අතර හොඳම කොටස නම් ඔබ කිසිවක් ස්ථාපනය කිරීමට අවශ්‍ය නැත! නියත වශයෙන්ම මගේ උඩු යටිකුරු කිරීම සුදුසුයි
දේව්

Anda බන්ඩා මුහම්මද් අල්හෙලාල් හේතු දෙකක් ඇතැයි මම සිතමි: වටකුරු කිරීම ( duතරමක් සුවිශේෂී වටයක් ඇත, තෝරාගත් ඒකකයේ අගය එකකට වඩා තිබේ නම් දශමයක් නොපෙන්වයි ), සහ සම්භාව්‍ය 1024 එදිරිව 1000 උපසර්ගය නිකුත් කිරීම. එය අගයන් පෙන්වන ඒකක වෙනස් කිරීමට duවිකල්පයක් -B(හෝ --block-size) ඇත, නැතහොත් “අමු” අගය බයිට් වලින් ලබා ගැනීම -bවෙනුවට භාවිතා කළ හැකිය -h.
මාසෙල් ස්ටිම්බර්ග්

173

මෑතකදී මම විශිෂ්ට, ncurses මත පදනම් වූ අන්තර්ක්‍රියාකාරී මෙවලමක් සොයාගත්තෙමි, එමඟින් ඔබට නාමාවලි ප්‍රමාණ පිළිබඳ දළ විශ්ලේෂණයක් ලබා දේ. අවුරුදු ගණනාවක් තිස්සේ ඒ ආකාරයේ මෙවලමක් සඳහා සෙව්වා.

  • ගොනු ධූරාවලිය හරහා ඉක්මනින් සරඹ කරන්න
  • ඔබට උදා: මෙවලම ඇතුළත සිට විශාල තාවකාලික ලිපිගොනු මකා දැමිය හැකිය
  • අතිශයින් වේගවත්

විධාන රේඛාව සඳහා එය baobab ලෙස සිතන්න :

apt-get install ncdu

11
මෙය ඇත්තෙන්ම අපූරුයි! ඩේසි ඩිස්ක් මෙන්,
ඕඑස්එක්ස්

3
ncduනියමයි! එය ස්ථාපනය කිරීමෙන් පසු මෙය කරන්න ncdu /. පද්ධතියේ විශාලතම ලිපිගොනු ඔබ ඉතා ඉක්මණින් සොයා ගනු ඇත. hNcdu හි කොන්සෝල අතුරුමුහුණත තුළ සිටියදී ද ඔබන්න . එය ඉතා ප්‍රයෝජනවත් කෙටිමං ඇත
vlad-ardelean

මෙය මට අවශ්‍ය දේමයි: ඉතා සරල, එතරම් කාර්යක්ෂම. පිවිතුරු ආදරය.
user3790897

59

මෙය ප්‍රමාණය පුනරාවර්තව සොයාගෙන එක් එක් ෆෝල්ඩරයේ නමට යාබදව, පතුලේ ඇති මුළු ප්‍රමාණය සමඟ, සියල්ලම මිනිස් ආකෘතියෙන්

du -hsc *


11

සම්පුර්ණ, ෆෝල්ඩරය සහ ගොනු ප්‍රමාණය මුද්‍රණය කිරීමට මා භාවිතා කරන්නේ පහත දැක්වේ:

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

විස්තර

 ------------------------------------------------------------
   -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

ප්‍රතිදානය

 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

10

tree මෙම කාර්යය සඳහා තවත් ප්‍රයෝජනවත් විධානයකි:

එය හරහා ස්ථාපනය කර sudo apt-get install treeපහත සඳහන් දේ ටයිප් කරන්න:

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

33.7M used in 0 directories, 25 files

සිට මිනිසා ගස :

-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.)

4

duනාමාවලියක මුළු ප්‍රමාණය සොයා ගැනීමේ මෙවලම එය බව පිළිතුරු මගින් පැහැදිලි කර ඇත. කෙසේ වෙතත්, සලකා බැලිය යුතු සාධක කිහිපයක් තිබේ:

  • ඇතැම් විට, duප්‍රතිදානය නොමඟ යැවිය හැකි බැවින් එය ගොනු පද්ධතිය විසින් වෙන් කරන ලද අවකාශය වාර්තා කරයි, එය එක් එක් ගොනු වල ප්‍රමාණයට වඩා වෙනස් විය හැකිය. සාමාන්‍යයෙන් ගොනු පද්ධතිය ඔබ ගොනුවක් සඳහා බයිට් 4096 ක් වෙන් කරනු ඇත.

  • 2 ක බලය සහ ඒකක 10 ක බලය හේතුවෙන් නිමැවුම් වෙනස්කම්. මෙම -hමාරු duමානව කියවිය හැකි නිෂ්පාදනයක් ලබා දීමට 2 ^ 10 (1024), 2 ^ 20 (1048576) ආදිය විසින් බයිට් සංඛ්යාව බෙදාගන්නේ ය. 10 හි බලයන් (උදා: 1K = 1000, 1M = 1000000) දැකීමට බොහෝ අය පුරුදු වී ඇති අතර ප්‍රති .ලය ගැන පුදුමයට පත් වේ.

නාමාවලියක ඇති සියලුම ලිපිගොනු වල මුළු එකතුව බයිට් වලින් සොයා ගැනීමට, කරන්න:

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

උදාහරණයක්:

$ du -s -B 1
255729664

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

Find-ls-awk විශාල ෆෝල්ඩර # 1 සඳහා වැරදි අගයක් ලබා දෙනු ඇත . නවතම awk සඳහා ඔබ එකතු කළ හැකි --bignumහෝ -M, එය විකල්පයක් නොවේ නම් find . -ls | tr -s ' '|cut -d' ' -f 7| paste -sd+ |bc # 2 භාවිතා කරන්න .
goozez

2 භාවිතා කිරීමේ බලතල ගැටළුවක් නම්, --siවිකල්පයක් ඇත: "-h වැනි, නමුත් 1000 නොව 1024 බලය භාවිතා කරන්න"
muru

2

කියවිය හැකි ආකෘතියකින් ඇති නාමාවලි ප්‍රමාණය සඳහා, පහත භාවිතා කරන්න:

du -hs directoryname

මෙය බොහෝ විට නිවැරදි කොටසේ නොපවතින නමුත් විධාන රේඛාවෙන් ඔබට උත්සාහ කළ හැකිය:

ls -sh filename

මෙම -sප්රමාණය වන අතර, -hමානව කියවිය හැකි ය.

පහත පරිදි ලැයිස්තුවේ -lපෙන්වීමට භාවිතා කරන්න ls:

ls -shl

0

du /foldernameෆෝල්ඩරයක ප්‍රමාණය දැන ගැනීමට සම්මත විධානය වේ. මෑන් පිටුව කියවීමෙන් විකල්ප සොයා ගැනීම වඩාත් සුදුසුය:

man du

ඔබ විධානය භාවිතා කිරීමට පෙර man පිටුව ( මාර්ගගතව ලබා ගත හැකිය ) කියවිය යුතුය .



0

ඔබ අපේක්ෂිත නාමාවලියෙහි බොහෝ උප නාමාවලි තිබේ නම්, පහත සඳහන් දෑ භාවිතා කරන්න:

$ cd ~/your/target/directory
$ du -csh 

-c, - මුළු එකතුව විශාල එකතුවක් නිෂ්පාදනය කරයි
, - එක් එක් තර්කය සඳහා සංක්ෂිප්තව පෙන්වන්න
--h, - මානව-කියවිය හැකි මුද්‍රිත ප්‍රමාණ මිනිස් කියවිය හැකි ආකෘතියෙන් (උදා: 1K 234M 2G)

එමඟින් වත්මන් නාමාවලියෙහි ඇති සියලුම ලිපිගොනු / ෆෝල්ඩර මගින් සමස්ත මතක භාවිතය නිපදවනු ඇත.


-2

මා සිතන හොඳම දේ පහත දැක්වේ:

du -h directory_name | tail -n1

මෙය ඔබට උනන්දුවක් දක්වන ඩිරෙක්ටරියේ ප්‍රමාණය පමණක් පෙන්වන අතර එම නාමාවලිය තුළ ඇති කිසිදු ඩිරෙක්ටරි සහ ලිපිගොනු වල ප්‍රමාණයන් මුද්‍රණය නොකරනු ඇත.

ෆෝල්ඩරයේ විශාලත්වය විශාල නම් du වැඩි කාලයක් ගත වන බව මම එකතු කළ යුතුය. මෙම විධානය ක්‍රියාත්මක වීමට ඔබ ඉවසිලිවන්ත විය යුතුය. වෙනත් ඕනෑම යුනික්ස් විධානයක් සේම, timeමෙම විධානයට පෙර භාවිතා කිරීමෙන් ඔබට මෙම ක්‍රියාවලිය සඳහා ගතවන කාලය සොයාගත හැකිය :

time du -h directory_name | tail -n1

7
duමේ සඳහා විකල්පයක් ඇත:-s
muru
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.