ডিরেক্টরিগুলির সংক্ষিপ্ত আকার এবং তাদের উপ-ডিরেক্টরিগুলি কীভাবে পাবেন?


307

ধরা যাক আমি লিনাক্স ফাইল সিস্টেমের প্রতিটি ডিরেক্টরি আকার পেতে চাই। আমি যখন ব্যবহার ls -laকরি তখন আমি ফোল্ডারগুলির সংক্ষিপ্ত আকারটি পাই না।

আমি যদি ব্যবহার dfকরি তবে প্রতিটি মাউন্ট করা ফাইল সিস্টেমের আকার পাই তবে এটি আমারও সহায়ক হয় না। এবং এর সাথে duআমি প্রতিটি সাবডিরেক্টরির আকার এবং পুরো ফাইল সিস্টেমের সারাংশ পাই।

তবে আমি ফাইল সিস্টেমের রুট ফোল্ডারের মধ্যে প্রতিটি ডিরেক্টরিগুলির সংক্ষিপ্ত আকারটি রাখতে চাই। এটি অর্জন করার জন্য কোনও আদেশ আছে কি?


--totalপতাকা আমার জন্য সহায়ক ছিল। যেমন du -sh --total applications/*Askubuntu.com/a/465436/48214
রায়ান

উত্তর:


433

আপনি যা সন্ধান করছেন এটি এটি করে:

du -sh /*

কি এই মানে:

  • -s প্রতিটি কমান্ড লাইন যুক্তির জন্য মোট দিতে।
  • -hমানব-পঠনযোগ্য প্রত্যয়ের Mজন্য যেমন মেগাবাইট এবং Gগিগা বাইট (alচ্ছিক))
  • /*কেবলমাত্র সমস্ত ডিরেক্টরিতে (এবং ফাইলগুলি) প্রসারিত হয় /

    দ্রষ্টব্য: ডটফাইলগুলি অন্তর্ভুক্ত নয়; সেগুলিও shopt -s dotglobঅন্তর্ভুক্ত করতে দৌড়াও ।

আকার অনুসারে বাছাই করাও দরকারী:

du -sh /* | sort -h

এখানে:

  • -hsortমানব-পঠনযোগ্য প্রত্যয়কে সঠিকভাবে ব্যাখ্যা করে তা নিশ্চিত করে ।

8
রুট ডিরেক্টরিতে যদি আপনার ডট ডিরেক্টরি থাকে তবে আপনি shopt -s dotglobএগুলি গণনায় অন্তর্ভুক্ত করতে ব্যবহার করতে পারেন ।
ফিলিপ

8
এটা খুব দরকারী কারণ এটা সহজ এবং আপনি স্থাপন করতে পারেন কি পথ আপনি পরিবর্তে চান /*, যেমন ./বর্তমান ডিরেক্টরী জন্য অথবা ./*বর্তমান ডিরেক্টরির মধ্যে প্রতিটি আইটেমের জন্য।
psur

3
@sur বা আপনি ./*/কেবল সাবফোল্ডারগুলি পেতে এবং সমস্ত
আইটেমই

7
সাজানো সংস্করণ:du -sh /* | sort -h
ভু আনহ

2
@ সি 1 এফআর যদি আপনার sortনা থাকে তবে আপনার এটিকেও -hত্যাগ করতে হবে du, অন্যথায় বাছাইয়ের ফলে কিলো / মেগা / গিগা বাইট মিশ্রিত হবে। du -s /* | sort -nr
টমাস

79

আমার প্রায়শই সবচেয়ে বড় ডিরেক্টরিগুলি সন্ধান করতে হয়, তাই আমি 20 টি বৃহত্তম ডায়ার সমন্বিত একটি বাছাই করা তালিকা পেতে:

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

এই ক্ষেত্রে মাপগুলি মেগাবাইটে প্রতিবেদন করা হবে।


11
এটি আরও পঠনযোগ্য du -sh / কিছু / পাথ পাওয়ার একটি উপায় এখানে বাছাই - hr | মাথা -n 20
এক্সেডিসিমাল

6
@ এক্সেডিসিমা এইচ ব্যবহার করে সমস্যাটি হ'ল ধরণটি বিভিন্ন আকারকে কীভাবে পরিচালনা করতে হয় তা জানে না। উদাহরণস্বরূপ 268K 255M এর চেয়ে বেশি বাছাই করা হয় এবং উভয়ই 2.7G এর চেয়ে বেশি বাছাই করা হয়
ক্রিশান

4
'সারণি' কমান্ডের -h (মানব পাঠযোগ্য) যুক্তিটি এই মানগুলি সঠিকভাবে পড়া উচিত। ডু-হ পতাকা যেমন তাদের রফতানি করে। আপনি যা চালাচ্ছেন তার উপর নির্ভর করে আমি অনুমান করছি।
এক্সেডিসিমাল

উবুন্টু 16.04 এ কাজ করে। সুন্দর টিপ।
এসডসোলার

sudo du -haxt 1G / | বাছাই - hr | শিরোনাম -30
বিকৃত

22

আমি এর জন্য এনসিডিডু ব্যবহার করতে চাই , আপনি ডিরেক্টরিটি এটি কার্যকরভাবে কাজ করে এমন ডিরেক্টরি কাঠামোটি নেভিগেট এবং ড্রিল করতে কার্সারটি ব্যবহার করতে পারেন।


অসাধারণ. কীওয়ার্ডস: ডু ncurses পূরণ। আপনি bডিরেক্টরিতে একটি শেল ফেলে দিতে ব্যবহার করতে পারেন ।
সিরো সান্তিলি 新疆 改造 中心 法轮功 六四 事件

11

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

  1. খুব বেসিক লুপ, তবে আমার জন্য এটি কিছু অন্যান্য আকার সম্পর্কিত ক্রিয়াকলাপের জন্য একটি ভাল সূচনা ছিল:

    for each in $(ls) ; do du -hs "$each" ; done
    
  2. প্রথম উত্তরের সাথে খুব সমান এবং প্রায় 1) হিসাবে একই ফলাফল), তবে আমাকে * / ** এর পার্থক্য বুঝতে কিছু সময় নিয়েছিল যদি উপ-ডিরেক্টরিতে থাকে:

    du -sh ./*
    

for eachএটি \033[ফোল্ডারগুলির তালিকায় কনসোল অক্ষরগুলি (যেমন ) সংযোজন করায় কাজ করে না
6:58

@ মেশিনেডিক্ট আপনি কী বলতে চাইছেন তা নিশ্চিত হন না। আমি এটি সব সময় ব্যবহার করি, আমার জন্য ঠিক কাজ করে।
মার্টিন

আপনার কমান্ড দিয়ে শুরু করার চেষ্টা করুন for each। এটা কাজ করবে না
machineaddict

আমি এখানে লিখিত ঠিক মত কমান্ড চালান। প্রতিটি জন্য শুরু। কাজ করে।
মার্টিন

7

নিম্নলিখিত duঅনুরোধটি BSD সিস্টেমগুলিতে কাজ করা উচিত:

du -d 1 /

1
আমার du(উবুন্টু 10.4) এর কোনও -dবিকল্প নেই। আপনি কি সিস্টেম চালু?
থমাস


ঠিক আছে, তবে এটি কেবল একটি BSD বিকল্প (আমি ওএস এক্সে আছি)।
ফিলিপ

বিএসডি / * এনআইএক্স-এ ডান পোর্টেবল বিকল্প সংমিশ্রণ du -sk /*। আমি জিনিস খুব -ksoooo ঘৃণা । লিনাক্স ' -hপুরোপুরি শিলা।
ডমি 100001

অন্যান্য সিস্টেমে এটির--max-depth
বিষ্ণু কুমার

4

এটি সহজ নয়। duকমান্ড পারেন ফাইল এবং ফোল্ডার (ডিফল্ট) বা শুধু সব আইটেম যা আপনি কমান্ড লাইন (বিকল্প উপর উল্লেখ এর মাপ দেখায় -s)।

লিনাক্সে মানব পাঠযোগ্য আকারের সাথে সাজানো বৃহত্তম আইটেমগুলি (ফাইল এবং ফোল্ডারগুলি) পেতে:

du -h | sort -h

এটি আপনাকে এক টন ছোট ফাইলের মধ্যে কবর দেবে। আপনি এগুলি থেকে মুক্তি পেতে পারেন --threshold(আমার উদাহরণে 1 এমবি):

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

এই কমান্ডটির সুবিধা হ'ল এতে লুকানো বিন্দু ফোল্ডার (ফোল্ডারগুলি যা দিয়ে শুরু হয় .) অন্তর্ভুক্ত।

আপনি যদি সত্যিই কেবল ফোল্ডারগুলি চান তবে আপনার এটি ব্যবহার করা দরকার findতবে এটি খুব ধীর হতে পারে, কারণ duঅনেকগুলি ফোল্ডার কয়েকবার স্ক্যান করতে হবে:

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

1
--threshold ^^^ এই অপশনটি লিনাক্স availavle নয়
podarok

1
@ পোদারোক এটি ওপেনসুএস ১৩.২ লিনাক্সে উপলব্ধ। আপনার বিতরণের আরও একটি সাম্প্রতিক সংস্করণ সন্ধান করার চেষ্টা করুন বা প্যাকেজের নিজেই একটি সাম্প্রতিক সংস্করণ সংকলন করুন।
অ্যারন দিগুল্লা

এটি উবুন্টু এলটিএসে কাজ করে না (14.04)। এটি অতি সাম্প্রতিক এক))
পোদারোক

@ পোদারোক জিএনইউ কোর্টিলসের কোন সংস্করণ? খনি 8.24 হয়।
অ্যারন দিগুল্লা

1
ক্যাচিং একটি খারাপ শব্দ হতে পারে। আমি এই পোর্টে এমন কিছু করার কথা ভাবছিলাম superuser.com/a/597173/121352 যেখানে আমরা একবার ম্যাপিংয়ের মধ্যে ডিস্কের সামগ্রীগুলি স্ক্যান করি এবং তারপরে আবার ডিস্কটি আঘাতের পরিবর্তে সেই ম্যাপিং থেকে ডেটা ব্যবহার করা চালিয়ে যাই।
হেনেস

1

সচেতন হোন, আপনি নিশ্চিত না duহয়ে বিভিন্ন সিস্টেম / মেশিনের সাথে ডিরেক্টরিগুলির তুলনা করতে পারবেন না , উভয়ই ফাইল সিস্টেমের একই ব্লক আকারে ভাগ করে। আপনি যদি একটি লিনাক্স মেশিন থেকে কিছু ফাইলকে এনএএস-তে সিএনসি করেন এবং আপনি নিজে সিঙ্ক করা ডিরেক্টরিটি তুলনা করতে চান তবে এটি গণনা করতে পারে। duবিভিন্ন ব্লক আকারের কারণে আপনি বিভিন্ন ফলাফল পেতে পারেন ....


0

আপনি xdiskusage পরীক্ষা করে দেখতে চাইতে পারেন । আপনাকে একই তথ্য দেবে, তবে গ্রাফিক্যালি দেখানো হয়েছে, প্লাস ডাউন ড্রিল করার অনুমতি দেয় (খুব দরকারী)। উইকিপিডিয়া এবং উইন্ডোজের জন্য অনুরূপ অন্যান্য ইউটিলিটি রয়েছে।


0

আপনি lsএর সাথে মিলিয়ে ব্যবহার করতে পারেন awk:

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

এর আউটপুট lsপাইপ করা হয় awkawkডেটা প্রক্রিয়াজাতকরণ শুরু করে। স্ট্যান্ডার্ড ডিলিমিটার হ'ল স্পেস। যোগফলের পরিবর্তনশীল totশূন্য থেকে আরম্ভ করা হয়; নিম্নলিখিত বিবৃতি প্রতিটি সারি / লাইন আউটপুট দ্বারা সম্পাদিত হয় ls। এটি কেবল totআকারের সাথে বৃদ্ধি পায় । $5পঞ্চম কলাম (দ্বারা আউটপুট ls) জন্য দাঁড়িয়েছে । শেষে আমরা মেগাবাইটে যোগফল (1024 * 1024) দিয়ে ভাগ করব।

আপনি যদি এটি কোনও স্ক্রিপ্ট বা ফাংশনে (.bashrc) রূপান্তর করতে চান তবে আপনি ফাইল টাইপ অনুসারে ডিরেক্টরিগুলির কয়েকটি সাবসেটের আকার পেতে এটি ব্যবহার করতে পারেন।

আপনি যদি সিস্টেমের বিস্তৃত তথ্য চান তবে kdirstatকাজে আসতে পারে!


আমি সম্মতি জানাই যে কেউ এই উদাহরণটি প্রসারিত করতে পারে এবং "ফাইল টাইপের অনুসারে" ডিরেক্টরিগুলির নির্দিষ্ট সাবসেটগুলি "ইত্যাদির মতো কৌশল অর্জন করতে পারে; এটি একটি ভাল সূচনা পয়েন্ট মনে হতে পারে। তবুও এই সমাধান শুরু থেকেই ত্রুটিযুক্ত। এই ব্যবহারটি ব্যবহার করতে চাইলে প্রত্যেক ব্যবহারকারীর কাছে আমি এই প্রশ্নের উত্তর এবং মন্তব্য পড়ার পাশাপাশি সেখানে লিঙ্কিত নিবন্ধটি পড়ার পরামর্শ দিচ্ছি । আমি বলছি না আপনি কিছু করতে পারবেন না। সীমাবদ্ধতাগুলি জানুন, এগুলি সবই।
কামিল ম্যাকিয়েরোভস্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.