আমি আকারের মাধ্যমে ডু-হ আউটপুটটিকে কীভাবে বাছাই করতে পারি


966

আমার মানব পাঠযোগ্য ডু আউটপুটের একটি তালিকা পেতে হবে।

তবে, du"আকার অনুসারে বাছাই করুন" বিকল্প sortনেই এবং পাইপিং মানব পাঠযোগ্য পতাকার সাথে কাজ করে না।

উদাহরণস্বরূপ, চলমান:

du | sort -n -r 

আকার অনুসারে বাছাই করা ডিস্কের ব্যবহার আউটপুট করে (উতরাই):

du |sort -n -r
65108   .
61508   ./dir3
2056    ./dir4
1032    ./dir1
508     ./dir2

তবে এটি মানব পাঠযোগ্য পতাকার সাথে চালানো সঠিকভাবে বাছাই করে না:

du -h | sort -n -r

508K    ./dir2
64M     .
61M     ./dir3
2.1M    ./dir4
1.1M    ./dir1

du -h আকার অনুসারে বাছাই করার উপায় কি কেউ জানেন ?


হেই ... মজার বিষয় আপনার জিজ্ঞাসা করা উচিত, কারণ এটি আমাকে বিরক্ত করে চলেছে ... কমপক্ষে এক বছরেরও বেশি সময় ধরে। গত সপ্তাহে আমি কোডটি জিএনইউ কোর্টিলগুলিতে ডাউনলোড করেছি (যার মধ্যে কোন ধরণের একটি অংশ) তা একবার দেখেছি তবে সিদ্ধান্ত নিয়েছি যে আমার হাতের প্যাচ করতে কিছুটা বেশি সময় লাগবে ... কেউ? :)
unwind

এখানে একটি আরও সম্পর্কিত প্রশ্ন: সার্ভারফল্ট.com
q

আপনি কি এটি দেখেছেন? unix.stackexchange.com/questions/4681/… এটি একটি কাছাকাছি সদৃশ এবং মূল্য সোনার। আপনি একটি সাধারণ কাজ করেন duতবে sortকমান্ডটি -h যোগ করুন । আপনি যুক্ত করতে পারেন -rhযাতে ফাইলটিতে বৃহত্তম বৃহত্তম হয়, অন্যথায় আপনাকে tailস্পেস হোগগুলি দেখতে হবে।
এসডসোলার

আমি এটি গুগল করার সময় আমি এই জাতীয় প্রশ্নটি এত জনপ্রিয় হওয়ার আশা করিনি।
মতিন উলহাক

উত্তর:


1359

জিএনইউ কোর্টিলস 7.৫ হিসাবে আগস্ট ২০০৯ এ প্রকাশিত, sortএকটি -hপ্যারামিটারের অনুমতি দেয়, যা উত্পাদিত ধরণের সংখ্যাসূচক প্রত্যয়ের অনুমতি দেয় du -h:

du -hs * | sort -h

আপনি যদি এমন কোনও বাছাই ব্যবহার করেন যা সমর্থন করে না -h, আপনি GNU Coreutils ইনস্টল করতে পারেন। পুরানো ম্যাক ওএস এক্সে যেমন:

brew install coreutils
du -hs * | gsort -h

sort ম্যানুয়াল থেকে :

-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)


3
ম্যানুয়ালটির প্রাসঙ্গিক বিভাগ: gnu.org/software/coreutils/manual/…
wodow

29
হোমব্রু দিয়ে ওএস এক্সে ইনস্টল করা সহজ - ব্রিউ ইনস্টল কোর্টিলস।
রিচার্ড পয়িয়ার 18

41
ভাল একটা! আমি ব্যক্তিগতভাবে সর্বদা du -BM | sort -nrএকটি কাজ হিসাবে কাজ করেছি - এটি যথেষ্ট পরিমাণে পাঠযোগ্য, এবং যদি কেউ পুরানো কোর্টিলগুলি আটকে থাকে তবে এটি সাজানো হয়।
chutz

30
যদি হোমব্রিউয়ের মাধ্যমে ওএসএক্স ব্যবহার করে থাকে তবে মনে রাখবেন যে এখন আপনাকে বাছাইয়ের পরিবর্তে জিএসোর্ট ব্যবহার করতে হবে:du -hs * | gsort -h
ব্রায়ান ক্লাইন

2
@ পলড্রাপার, du -BMসমস্ত কিছু মেগাবাইটে মুদ্রণ করে, সুতরাং ১8৮ কে-র একটি ফাইল আসলে 0 এম হিসাবে প্রদর্শিত হবে। অন্য কোনও সংস্করণের তাত্পর্য না থাকলে আমি অবগত নই। আমার সংস্করণটি duকেবল পূর্ণসংখ্যার মেগাবাইট মান দেখায়।
chutz

88
du | sort -nr | cut -f2- | xargs du -hs

48
এবং এটি বিপুল পরিমাণে সদৃশ গণনা করবে।
ডগলাস লিডার

1
প্রথমে এটি সাধারণ ডু করে - তারপরে প্রতিটি প্রবেশের জন্য এটি আকারটি গণনা করে কেবল এটি মানব পাঠযোগ্য আকারে মুদ্রণ করতে।
ডগলাস লিডার

8
@ ডগলাস লিডার: আপনি সদৃশ গণনার পক্ষে সঠিক, তবে মনে করুন যে দ্বিতীয় ডু শীতল ক্যাশে থেকে শুরু হয়নি (ওএসকে ধন্যবাদ) @ হাসেন জে: xargs একটি খুব দরকারী কমান্ড, এটি তার স্টাডিনকে বিভক্ত করে এবং যুক্তি হিসাবে এটি ফিড করে প্রদত্ত কমান্ড
ক্যাডারিয়ান

4
হোয়াইটস্পেস যুক্ত পাথের সাথে কাজ করে ক্রিস এর প্রকৃতপক্ষে উচ্চতর। আপনার মতামতটি ভোটের দিকে ছুঁড়ে ফেলা হচ্ছে udd
rbright

3
কুরুচিপূর্ণ, তবে ক্রস প্ল্যাটফর্ম :)।
voretaq7

62

@ ডগলাস লিডার, আরও একটি উত্তর: মানব-পঠনযোগ্য আউটপুটটি অন্য একটি সরঞ্জাম ব্যবহার করে ডু-হ থেকে সাজান। পার্লের মতো!

du -h | perl -e 'sub h{%h=(K=>10,M=>20,G=>30);($n,$u)=shift=~/([0-9.]+)(\D)/;
return $n*2**$h{$u}}print sort{h($b)<=>h($a)}<>;'

ডিসপ্লেতে ফিট করতে দুটি লাইনে বিভক্ত করুন। আপনি এটি এইভাবে ব্যবহার করতে পারেন বা এটি একটি এক-লাইনার তৈরি করতে পারেন, এটি যেভাবেই চলবে।

আউটপুট:

4.5M    .
3.7M    ./colors
372K    ./plugin
128K    ./autoload
100K    ./doc
100K    ./syntax

সম্পাদনা: পার্লমঙ্কসে কয়েক দফা গল্ফের পরে , চূড়ান্ত ফলাফলটি নিম্নলিখিত:

perl -e'%h=map{/.\s/;99**(ord$&&7)-$`,$_}`du -h`;die@h{sort%h}'

2
আপনার সংক্ষিপ্ত সংস্করণ আউটপুট চালু stderrহওয়ায় dieআপনি এটিকে আউটপুট চালু করতে পারেন stdout?
ডেনিস উইলিয়ামসন

2
পরিবর্তন dieএকটি থেকে printএবং এটি যেতে হবে stdout। এটি আরও দুটি চরিত্র।
অ্যাডাম বেলায়ার

উবুন্টুতে কাজ করে!
মেরিনারা

চিত্তাকর্ষক পার্ল হ্যাক্ট্রি
ন্যানডোপ

ফলাফলটি বিপরীত ক্রমে :(
আরএসফালকন 7

55

আমি এনসিডিইউ নামে একটি অপরিহার্য দরকারী সরঞ্জাম ব্যবহার করেছি যা সেইসব উচ্চতর উচ্চ ডিস্ক-ব্যবহারের ফোল্ডার এবং ফাইলগুলি সন্ধান এবং তাদের অপসারণের জন্য ডিজাইন করা হয়েছে। এটি কনসোল ভিত্তিক, দ্রুত এবং হালকা, এবং সমস্ত বড় বিতরণে প্যাকেজ রয়েছে।


খুব সুন্দর ... আমি ভাবছি যদি ফলাফলগুলি স্ট্যান্ডার্ড হিসাবে খাওয়ানো যায় ... আমি এতটাই অলস যে আমি ম্যানুয়ালটি পড়তে পারি না
ওজব্লাস

8
জিটি 5 একই শিরায় রয়েছে; এর হত্যাকারী বৈশিষ্ট্যটি বৃদ্ধি প্রদর্শন করছে।
তোবু

1
এটা দারুন! এবং duযদি আপনি কেবল বৃহত্তর ডিরেক্টরিগুলি সনাক্ত করতে চান তবে প্রায় চারদিকে ঝুলন্ত থেকে দ্রুত
বার্লিনলিও

44
du -k * | sort -nr | cut -f2 | xargs -d '\n' du -sh

ব্যবহার করতে পারবেন না du -k --total, শেষে ত্রুটি দেয়du: cannot access 'total': No such file or directory
laggingreflex

আমি এই অন্য কোনও উত্তর পছন্দ। আপনি কিভাবে প্রথম 50 টি ফলাফল প্রদর্শন করতে যাবেন?
মৌ

1
@ মাউরো - কেবল head`| যোগ করে ফলাফলটি পাইপ করুন মাথা -50` শেষে।
স্যামুয়েল লেলিভ্রে

21

আমি যতদূর দেখতে পাচ্ছি আপনার কাছে তিনটি বিকল্প রয়েছে:

  1. duপ্রদর্শনের আগে বাছাই করতে পরিবর্তন করুন ।
  2. sortসংখ্যার বাছাইয়ের জন্য মানুষের আকারকে সমর্থন করতে পরিবর্তন করুন ।
  3. মৌলিক আউটপুটটিকে মানব পাঠযোগ্যতে পরিবর্তন করতে সাজানোর থেকে আউটপুট পোস্ট করুন।

আপনি করতে পারেন du -k কিবি-তে আকার এবং আকারেও live

বিকল্প 3 এর জন্য আপনি নিম্নলিখিত স্ক্রিপ্টটি ব্যবহার করতে পারেন:

#!/usr/bin/env python

import sys
import re

sizeRe = re.compile(r"^(\d+)(.*)$")

for line in sys.stdin.readlines():
    mo = sizeRe.match(line)
    if mo:
        size = int(mo.group(1))
        if size < 1024:
            size = str(size)+"K"
        elif size < 1024 ** 2:
            size = str(size/1024)+"M"
        else:
            size = str(size/(1024 ** 2))+"G"

        print "%s%s"%(size,mo.group(2))
    else:
        print line

20

আমারও সেই সমস্যা ছিল এবং আমি বর্তমানে একটি কার্যপ্রণালী ব্যবহার করছি:

du -scBM | sort -n

এটি মাপানো মানগুলি তৈরি করবে না, তবে সর্বদা আকারটি মেগাবাইটে উত্পাদন করে। এটি তত কম নিখুঁত তবে আমার জন্য এটি কোনও কিছুর চেয়ে ভাল (বা আকারে বাইট আকারে প্রদর্শন করা)।


আমি তম -BM সুইচ, যা মূলত -m হিসাবে একই মত, কিন্তু এটা আকার প্রদর্শন এবং এম এটি অ্যাপলিকেশনগুলি US English ব্যবহার সুবিধা আছে, তাই আপনি 10M যা মাত্র 10 :) তুলনায় অনেক পরিষ্কার পেতে
টম Feiner

এই পৃষ্ঠায় আমি এখন পর্যন্ত এটি দেখতে পেয়েছি সবচেয়ে সহজ সমাধান, আপনাকে ধন্যবাদ!
জেফ ওলসন

19

এই পোস্টিং অন্য কোথাও পাওয়া গেছে । অতএব, এই শেল স্ক্রিপ্টটি যা যা করতে চাইবে duসবকিছুতে দুবার কল না করেই করবে । এটি awkকাঁচা বাইটগুলি একটি মানব-পঠনযোগ্য ফর্ম্যাটে রূপান্তর করতে ব্যবহার করে। অবশ্যই, ফর্ম্যাটটি কিছুটা পৃথক (সমস্ত কিছু এক দশমিক স্থানে যথাযথভাবে মুদ্রিত)।

#/bin/bash
du -B1 | sort -nr  |awk '{sum=$1;
hum[1024**3]="G";hum[1024**2]="M";hum[1024]="K";
for (x=1024**3; x>=1024; x/=1024){
        if (sum>=x) { printf "%.1f%s\t\t",sum/x,hum[x];print $2;break
}}}'

এটি আমার .vimডিরেক্টরিতে চালানো ফলন:

4.4M            .
3.6M            ./colors
372.0K          ./plugin
128.0K          ./autoload
100.0K          ./syntax
100.0K          ./doc

(আমি আশা করি 3.6M রঙের স্কিমগুলি অতিরিক্ত নয়))


1
আমারও একটি পার্ল উত্তর রয়েছে তবে আমি মনে করি এটি হয়ত আমাকে ঘৃণা করবে: ডু-বি 1 | সাজানো -nr | perl -e '% h = (0 => খ, 1 => কে, 2 => এম, 3 => জি); (<>) for ($ s, @ f) = বিভক্ত / \ s + /; $ এর জন্য e = 3; $ e-- যখন (1024 ** $ e> $ s); $ v = ($ s / (1024 **) ই)); প্রিন্টফ "% -8s% s \ n", স্প্রিন্টফ ($ v> = 100? "% d% s": "% .1f% s", $ s / (1024 ** $ ই), $ এইচ {$ ই}), @ চ;
অ্যাডাম বেলায়ার

যদিও পার্ল উত্তরটি এর ফর্ম্যাটটিকে ডু এর আরও অনেক কাছাকাছি দেয়। যদিও রাউন্ডিং বন্ধ রয়েছে ... দেখে মনে হচ্ছে ডু সবসময় গোল () এর পরিবর্তে সিল দেয় ()
অ্যাডাম বেলায়ার

আরে আমি কেন সেখানে একটি হ্যাশ ব্যবহার করেছি? একটি অ্যারে হওয়া উচিত ছিল ... সকাল-ব্রেইন গ্র্যাম্বল ....
অ্যাডাম বেলায়ার

অন্য উত্তর হিসাবে আরও ভাল পার্ল সমাধান যুক্ত করা হয়েছে।
অ্যাডাম বেলায়ার

ফাইলের নামগুলি ফাঁকা
রাখলে

15

এই সংস্করণটি awkবাছাই কীগুলির জন্য অতিরিক্ত কলাম তৈরি করতে ব্যবহার করে। এটি কেবল duএকবার কল করে । আউটপুট ঠিক মত দেখতে হবেdu

আমি এটিকে একাধিক লাইনে বিভক্ত করেছি, তবে এটি পুনরায় একলাইনারে যুক্ত করা যেতে পারে।

du -h |
  awk '{printf "%s %08.2f\t%s\n", 
    index("KMG", substr($1, length($1))),
    substr($1, 0, length($1)-1), $0}' |
  sort -r | cut -f2,3

ব্যাখ্যা:

  • বিগইন - ইউনিট অনুসারে গ্রুপিংয়ের জন্য কে, এম, জি এর জন্য 1, 2, 3 এর পরিবর্তে সূচকে একটি স্ট্রিং তৈরি করুন, যদি কোনও ইউনিট নেই (আকার 1K এর চেয়ে কম) তবে কোনও মিল নেই এবং একটি শূন্য ফিরে এসেছে (নিখুঁত! )
  • নতুন ক্ষেত্রগুলি - ইউনিট, মান (আলফা-সাজানোর কাজটি সঠিকভাবে করতে এটি শূন্য প্যাডড, স্থির দৈর্ঘ্যের) এবং মূল লাইনটি মুদ্রণ করুন
  • আকার ক্ষেত্রের শেষ অক্ষরটি সূচক করুন
  • আকারের সাংখ্যিক অংশটি টানুন
  • ফলাফলগুলি বাছাই করুন, অতিরিক্ত কলামগুলি বাতিল করুন

এটি ছাড়া চেষ্টা করুন cutএটি কী করছে তা দেখার আদেশ দেখুন।

এখানে এমন একটি সংস্করণ রয়েছে যা AWK স্ক্রিপ্টের মধ্যে বাছাই করে এবং এটির প্রয়োজন হয় না cut:

du -h |
   awk '{idx = sprintf("%s %08.2f %s", 
         index("KMG", substr($1, length($1))),
         substr($1, 0, length($1)-1), $0);
         lines[idx] = $0}
    END {c = asorti(lines, sorted);
         for (i = c; i >= 1; i--)
           print lines[sorted[i]]}'

ধন্যবাদ! এটি প্রথম উদাহরণ যা আমার জন্য ওএস এক্স 10.6 এ কাজ করে যাতে পার্ল / ফাইথন-স্ক্রিপ্টগুলি গণনা করা হয় না। এবং ভাল ব্যাখ্যার জন্য আবার ধন্যবাদ। সর্বদা নতুন কিছু শিখতে চমৎকার। বুদ্ধিমান নিশ্চিত একটি শক্তিশালী সরঞ্জাম।
ওল্ফ

তার জন্য দুর্দান্ত ধন্যবাদ। du -sh *পুনরাবৃত্তির উত্থান ছাড়াই কেবলমাত্র তাত্ক্ষণিক ফাইল এবং ডিরেক্টরিগুলি দেখানোর জন্য আমি ডু পরিবর্তন করেছিলাম ।
হ্যাঙ্ককা

15

এখানে একটি উদাহরণ যা আরও কমপ্যাক্ট সংক্ষিপ্ত আকারে ডিরেক্টরিগুলি দেখায়। এটি ডিরেক্টরি / ফাইলের নামগুলিতে স্পেস পরিচালনা করে।

% du -s * | sort -rn | cut -f2- | xargs -d "\n" du -sh

53G  projects
21G  Desktop
7.2G VirtualBox VMs
3.7G db
3.3G SparkleShare
2.2G Dropbox
272M apps
47M  incoming
14M  bin
5.7M rpmbuild
68K  vimdir.tgz

1
ম্যাকোস / ওএসএক্স ব্যবহারকারীদের সাবধান করে দেওয়া হয়েছে যে xargs এর ম্যাক সংস্করণ -d পতাকাটি সমর্থন করে না, এবং আপনি যদি এটি বাদ দেন তবে কোনও স্থানের মধ্যে থাকা ডিরেক্টরিতে প্রতিটি শব্দের পৃথক পৃথক পৃথক চিহ্ন রয়েছে যা অবশ্যই ব্যর্থ হয়।
জেসনোলজি


9

ডুটপ নামে ডুয়ের জন্য আমি একটি সাধারণ তবে দরকারী অজগর র‍্যাপার । নোট করুন যে আমরা (কোর্টিল রক্ষণাবেক্ষণকারী) সরাসরি "মানব" আউটপুটটিকে বাছাই করতে কার্যকারিতা যুক্ত করার বিষয়ে বিবেচনা করছি।


1
"একটি কাজ করুন এবং এটি সঠিকভাবে করুন" এর বিরল, বৈধ ব্যতিক্রমগুলির মধ্যে একটির জন্য +1। এসআই-উপসর্গ এবং / অথবা বাইনারি উপসর্গগুলি বোঝার জন্য যদি কারওর সাজান না পাওয়া যায়।
জোছিম সউর

এবং পিটিম্যান হিসাবে নীচে উল্লেখ করা হয়েছে: তা দা ! (নতুন sortপতাকা)
টুবু

9

অন্য একটি পেয়েছেন:

$ du -B1 | sort -nr | perl -MNumber::Bytes::Human=format_bytes -F'\t' -lane 'print format_bytes($F[0])."\t".$F[1]'

আমি পার্ল পছন্দ করতে শুরু করছি আপনি একটি করতে পারে

$ cpan Number::Bytes::Human

প্রথম। সেখানে থাকা সমস্ত পার্ল হ্যাকারদের কাছে: হ্যাঁ, আমি জানি যে সাজানোর অংশটি পার্লেও করা যেতে পারে। সম্ভবত ডু অংশও।


8

এই স্নিপেটটি নির্লজ্জভাবে http://www.unix.com/shell-programming-scriptting/32555-du-h-sort.html থেকে 'জিন-পিয়েরে' থেকে ছিনিয়ে নেওয়া হয়েছিল । আমি কি আরও ভালভাবে তাকে creditণ দিতে পারি?

du -k | sort -nr | awk '
     BEGIN {
        split("KB,MB,GB,TB", Units, ",");
     }
     {
        u = 1;
        while ($1 >= 1024) {
           $1 = $1 / 1024;
           u += 1
        }
        $1 = sprintf("%.1f %s", $1, Units[u]);
        print $0;
     }
    '

আমি মনে করি এটি যদি খুব বেশি সংখ্যক হয় তবে ইউনিটটি চলে গেছে এবং প্রদর্শিত সংখ্যাটি ছোট ... চেষ্টা করুন23423423432423
9-18 এ নোপল

7

"-G" পতাকাটি ব্যবহার করুন

 -g, --general-numeric-sort
              compare according to general numerical value

এবং আমার / usr / স্থানীয় ডিরেক্টরিতে এই জাতীয় আউটপুট উত্পাদন করে:

$ du |sort -g

0   ./lib/site_ruby/1.8/rubygems/digest
20  ./lib/site_ruby/1.8/rubygems/ext
20  ./share/xml
24  ./lib/perl
24  ./share/sgml
44  ./lib/site_ruby/1.8/rubygems/package
44  ./share/mime
52  ./share/icons/hicolor
56  ./share/icons
112 ./share/perl/5.10.0/YAML
132 ./lib/site_ruby/1.8/rubygems/commands
132 ./share/man/man3
136 ./share/man
156 ./share/perl/5.10.0
160 ./share/perl
488 ./share
560 ./lib/site_ruby/1.8/rubygems
604 ./lib/site_ruby/1.8
608 ./lib/site_ruby

4
এটি মানব-পঠনযোগ্য আউটপুট দেয় না, যদিও এটি ওপি খুঁজছিল।


4

এখানে আমি ব্যবহার করি এমন সহজ পদ্ধতি, খুব স্বল্প সংস্থান ব্যবহার এবং আপনার যা প্রয়োজন তা তা আপনাকে প্রদান করে:

du --max-depth=1 | sort -n | awk 'BEGIN {OFMT = "%.0f"} {print $1/1024,"MB", $2}'

0 MB ./etc
1 MB ./mail
2 MB ./tmp
123 MB ./public_html

4

এটি লাইনে পাওয়া গেছে ... মনে হচ্ছে ঠিক আছে

du -sh * | tee /tmp/duout.txt | grep G | sort -rn ; cat /tmp/duout.txt | grep M | sort -rn ; cat /tmp/duout.txt | grep K | sort -rn ; rm /tmp/duout.txt

স্বচ্ছভাবে এই ওয়ান-লাইনারের ভিত্তিতে, আমি একটি মানব-পঠনযোগ্য, সাজানো ডু (1) আউটপুট সরবরাহের জন্য একটি স্ক্রিপ্ট তৈরি করেছি। দয়া করে আমার উত্তরটি দেখুন, serverfault.com/a/937459/218692
ট্রিপ কাইনেটিকস

3

গতকাল এই উদাহরণটি উত্থাপন থেকে আমি শিখলাম। এটি কিছুটা সময় নিয়েছিল তবে এটি বেশ মজাদার ছিল এবং আমি কীভাবে বিশ্রী ব্যবহার করতে হয় তা শিখেছি।

এটি একবার মাত্র ডু চালায়, এবং এর ডু-হ-এর মতো আউটপুট রয়েছে

du --max-depth=0 -k * | sort -nr | awk '{ if($1>=1024*1024) {size=$1/1024/1024; unit="G"} else if($1>=1024) {size=$1/1024; unit="M"} else {size=$1; unit="K"}; if(size<10) format="%.1f%s"; else format="%.0f%s"; res=sprintf(format,size,unit); printf "%-8s %s\n",res,$2 }'

এটি দশমিক বিন্দু সহ 10 এর নীচে সংখ্যাগুলি দেখায়।



2

আপনার যদি ফাঁকা জায়গাগুলি পরিচালনা করার প্রয়োজন হয় তবে আপনি নীচেরটি ব্যবহার করতে পারেন

 du -d 1| sort -nr | cut -f2 | sed 's/ /\\ /g' | xargs du -sh

অতিরিক্ত সেড স্টেটমেন্টটি অ্যাপ্লিকেশন সহায়তা হিসাবে নামগুলির সাথে ফোল্ডারগুলির সমস্যাগুলি হ্রাস করতে সহায়তা করবে


সবেমাত্র ম্যাকস সিয়েরায় চেষ্টা করে দেখলাম। আশানুরূপ কাজ করে। নিস!
জেসনোলজি


1

http://dev.yorhel.nl/ncdu

কমান্ড: এনসিডু

ডিরেক্টরি নেভিগেশন, বাছাই (নাম এবং আকার), গ্রাফিং, মানব পাঠযোগ্য, ইত্যাদি ...


1
দুর্দান্ত ইউটিলিটি, তবে আমি যে কোনও ওএস সম্পর্কে সচেতন সেগুলি ডিফল্টরূপে ইনস্টল করা নেই। অগত্যা কোনও সমস্যা নয়, তবে আরও একটি প্রোগ্রাম দেখাশোনা করতে হবে ...
voretaq7

1

আরেকটি awkসমাধান -

du -k ./* | sort -nr | 
awk '
{split("KB,MB,GB",size,",");}
{x = 1;while ($1 >= 1024) 
{$1 = $1 / 1024;x = x + 1} $1 = sprintf("%-4.2f%s", $1, size[x]); print $0;}'


[jaypal~/Desktop/Reference]$ du -k ./* | sort -nr | awk '{split("KB,MB,GB",size,",");}{x = 1;while ($1 >= 1024) {$1 = $1 / 1024;x = x + 1} $1 = sprintf("%-4.2f%s", $1, size[x]); print $0;}'
15.92MB ./Personal
13.82MB ./Personal/Docs
2.35MB ./Work Docs
1.59MB ./Work Docs/Work
1.46MB ./Personal/Raa
584.00KB ./scan 1.pdf
544.00KB ./Personal/Resume
44.00KB ./Membership.xlsx
16.00KB ./Membership Transmittal Template.xlsx

1

আমি @ptman দ্বারা সরবরাহিত সমাধানটি ব্যবহার করে আসছি তবে সাম্প্রতিক সার্ভার পরিবর্তন এটিকে আর কার্যকর করা যায়নি। পরিবর্তে, আমি নিম্নলিখিত বাশ স্ক্রিপ্ট ব্যবহার করছি:

#!/bin/bash
# File: duf.sh
# list contents of the current directory by increasing 
#+size in human readable format

# for some, "-d 1" will be "--maxdepth=1"
du -k -d 1 | sort -g | awk '
{
if($1<1024)
    printf("%.0f KB\t%s",$1,$2);
else if($1<1024*1024)
    printf("%.1f MB\t%s",$1/1024,$2);
else
    printf("%.1f GB\t%s",$1/1024/1024,$2);
}'

বিএসডি du -d 1সিনট্যাক্সটি জিএনইউ ডু দ্বারা 2010 সালে কোরিটিলস 8.6 প্রকাশিত হওয়ার পরে সমর্থন করা হয়েছে (যদিও এটির প্রথম রেড হ্যাট উপলভ্যতা ছিল 2014 সালে আরএইচইল 7), সুতরাং আপনার আর প্রয়োজন নেই --maxdepth=1। আমি সম্প্রতি এটি সম্পর্কে নিজেই জানতে পেরেছি ।
অ্যাডাম কাটজ

1

du -s * | সাজানো -nr | কাট -ফ 2 | xargs du -sh


এটি কোনও দুর্দান্ত সমাধান নয়, কারণ এটি ফাইল সিস্টেমকে দু'বার ট্র্যাভার করে।
পল গিয়ার

1

এখানে প্রচুর উত্তর রয়েছে, যার অনেকগুলি সদৃশ। আমি তিনটি ট্রেন্ড দেখতে পাচ্ছি: একটি দ্বিতীয় ডু কল মাধ্যমে পাইপিং করা, জটিল শেল / অ্যাজক কোড ব্যবহার করা এবং অন্যান্য ভাষা ব্যবহার করা।

এখানে du এবং awk ব্যবহার করে একটি পসিএক্স-সম্মতিযুক্ত সমাধান যা প্রতিটি সিস্টেমে কাজ করা উচিত।

আমি কিছুটা ভিন্ন পদ্ধতির অবলম্বন করেছি, -xআমরা একই ফাইল সিস্টেমে থাকি তা নিশ্চিত করার জন্য (যখনই আমি ডিস্কের স্পেসে সংক্ষিপ্ত থাকি তখনই কেবল এই অপারেশনটি প্রয়োজন, তাই কেন আমি এই এফএস গাছের ভিতরে মাউন্ট করেছি বা সরিয়েছি এবং যে জিনিসগুলি আগাছা করে ফেলেছি এবং ফিরে সিমলিংক?) এবং সহজে ভিজ্যুয়াল পার্সিংয়ের জন্য ধ্রুবক একক প্রদর্শন করা। এই ক্ষেত্রে, আমি সাধারণত বাছাই না করা পছন্দ করি যাতে আমি শ্রেণিবদ্ধ কাঠামো আরও ভাল দেখতে পাই।

sudo du -x | awk '
  $1 > 2^20 { s=$1; $1=""; printf "%7sG%s\n", sprintf("%.2f",s/2^21), $0 }'

(যেহেতু এটি ধারাবাহিক ইউনিটগুলিতে | sort -nথাকে তাই আপনি যদি সত্যিই বাছাই করতে চান তবে আপনি যুক্ত করতে পারেন ed ফলাফল নেই।)

এটি এমন কোনও ডিরেক্টরিকে ফিল্টার করে যার (संचयी) বিষয়বস্তু 512 এমবি ছাড়িয়ে যায় এবং তারপরে গিগাবাইটে আকারগুলি প্রদর্শন করে। ডিফল্টরূপে, ডু একটি 512-বাইট ব্লক আকার ব্যবহার (তাই 2 awk অবস্থার 20 ব্লক 512MB এবং তার 2 21 ভাজক GB পর্যন্ত ইউনিট পরিবর্তন করে - আমরা ব্যবহার করতে পারে du -kxসঙ্গে $1 > 512*1024এবং s/1024^2আরো পাঠযোগ্য হতে)। অজানা অবস্থার অভ্যন্তরে, আমরা sআকারটিতে সেট করেছি যাতে আমরা এটি লাইন ( $0) থেকে সরাতে পারি । এটি ডিলিমিটার ধরে রাখে (যা একটি একক জায়গাতেই ধসে পড়ে) তাই ফাইনালটি %sএকটি স্থান এবং তারপরে সংযুক্ত ডিরেক্টরিটির নাম উপস্থাপন করে। %7sবৃত্তাকার %.2fজিবি আকার সারিবদ্ধ করে (এতে বৃদ্ধি করুন)%8s তোলে আপনার যদি> 10 টিবি থাকে তবে বাড়ান)।

এখানকার বেশিরভাগ সমাধানের বিপরীতে, এটি সঠিকভাবে তাদের নামের ফাঁকা জায়গাগুলি সহ ডিরেক্টরিগুলি সমর্থন করে (যদিও এই সমাধান সহ প্রতিটি সমাধানই লাইন ব্রেক সহ ডিরেক্টরিগুলির নাম ভুলবস্তু করবে)।


0

কমপক্ষে সাধারণ সরঞ্জামগুলির সাথে, মানব-পঠনযোগ্য সংখ্যা যে বিন্যাসে রয়েছে সেটির জন্য এটি শক্ত হবে (নোটটি সাজান হিসাবে এখানে সাজানো একটি "ভাল কাজ" করে - নোটটি সাজান - 508, 64, 61, 2, 2 - এটি কেবল অতিরিক্ত গুণক সহ ভাসমান পয়েন্ট সংখ্যাগুলি বাছাই করতে পারে না)।

আমি এটি অন্য উপায়ে চেষ্টা করব - "du | सॉर्ट-এন-আর" থেকে আউটপুটটি ব্যবহার করব এবং তারপরে কিছু স্ক্রিপ্ট বা প্রোগ্রামের মাধ্যমে সংখ্যাগুলি মানব-পঠনযোগ্য ফর্ম্যাটে রূপান্তর করব।


0

আপনি যা চেষ্টা করতে পারেন তা হ'ল:

for i in `du -s * | sort -n | cut -f2`
do
  du -h $i;
done

আশা করি এইটি কাজ করবে.


xargs
এটিই

ওহে, আমি সবসময় xargs সম্পর্কে ভুলে যাই ;) দিন শেষে, ইমো দিয়ে কাজটি যাই ঘটুক।

ম্যাকসএক্স ডিফল্টরূপে (যেমন হোম-ব্রিউয়ের বাইরে) কোনও উপযুক্ত সমর্থন করে না xargsতাই এই ফর্মটি প্রয়োজনীয় ছিল। তবে IFS=$'\n'
এগুলিতে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.