কমান্ড লাইন থেকে আমি কোনও ডিরেক্টরি (ফোল্ডার) এর মোট আকারটি কীভাবে নির্ধারণ করব?


785

ডিরেক্টরি (ফোল্ডার) এর সমস্ত ফাইলের মোট সমষ্টি আকার (ডিস্ক ব্যবহার) প্রদর্শন করার জন্য কি কোনও সাধারণ আদেশ আছে?

আমি এগুলি চেষ্টা করেছি এবং তারা যা চায় তা করে না:

  • ls -lযা কেবলমাত্র একটি ডিরেক্টরিতে পৃথক ফাইলের আকার প্রদর্শন করে না nor
  • df -h, যা কেবলমাত্র আমার ডিস্কগুলিতে বিনামূল্যে এবং ব্যবহৃত স্থান প্রদর্শন করে।



বন্ধুত্বপূর্ণ অনুস্মারক যে এটি বিটিআরএফএসের মতো CoW ফাইল সিস্টেমে প্রায় শূন্য ধারণা তৈরি করতে পারে।
Val

উত্তর:


1263

কমান্ডটি 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

93
du -shএটি মনে রাখার উপায় হিসাবে আমি ব্যবহার করি বা ডওশ ব্যবহার করি (দ্রষ্টব্য: কমান্ডটি একই, কেবল স্মৃতির উদ্দেশ্যে
কমান্ডলাইন

3
- এ-প্যারেন্ট-সাইজ নামে ডু করার জন্য একটি দরকারী বিকল্প রয়েছে। এটি কোনও ফাইল বা ডিরেক্টরির প্রকৃত আকার (ডিস্কে এর পদচিহ্নের বিপরীতে) সন্ধান করতে ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ, মাত্র 4 টি অক্ষরের একটি পাঠ্য ফাইল প্রায় 6 বাইট দখল করবে, তবে এখনও 4 ডলার অবধি গ্রহণ করবে একটি নিয়মিত du -sh আউটপুট। তবে, আপনি যদি -আর-বাবা-আকারের বিকল্পটি পাস করেন তবে আউটপুটটি 6 হবে man ম্যান ডু বলেছেন: - পিতামাতার আকারের প্রিন্ট স্পষ্ট আকারের পরিবর্তে ডিস্ক ব্যবহারের পরিবর্তে; যদিও আপাত আকারটি সাধারণত ছোট থাকে তবে ফাইলগুলির ('স্পার্স') গর্ত, অভ্যন্তরীণ খণ্ডন, পরোক্ষ ব্লকগুলির কারণে এটি বৃহত্তর হতে পারে
হোপিং বনি

4
এটি ওএস এক্সের জন্যও কাজ করে! ধন্যবাদ, আমি আমার স্থানীয় মেশিন এবং সার্ভার উভয় ক্ষেত্রেই ফাইলগুলি সাফ করার জন্য সত্যিই একটি উপায় খুঁজছিলাম, তবে স্বয়ংক্রিয় পদ্ধতিগুলি কার্যকর হয়নি বলে মনে হয়েছিল। সুতরাং, আমি দৌড়ে du -hs *গিয়ে বৃহত্তম ডিরেক্টরিতে গিয়ে foundুকলাম এবং কোন ফাইলগুলি এত বড়! অবশ্যই আমার উর্ধ্বে প্রাপ্য
দেব

@ বান্দা মুহাম্মাদ আলহেলাল আমার মনে হয় যে এর দুটি কারণ রয়েছে: গোলাকার ( duনির্বাচিত ইউনিটে মানটির একাধিক সংখ্যার বেশি হলে দশমিক সংখ্যা না দেখানো), এবং শাস্ত্রীয় 1024 বনাম 1000 উপসর্গ ইস্যু। ইউনিটগুলি পরিবর্তনের জন্য duএকটি বিকল্প রয়েছে -B( --block-sizeযেখানে) এটি মানগুলি প্রদর্শন করে, বা আপনি "কাঁচা" মান বাইটে পাওয়ার -bপরিবর্তে ব্যবহার করতে পারেন -h
মার্সেল স্টিমবার্গ

164

সম্প্রতি আমি একটি দুর্দান্ত, ncurses ভিত্তিক ইন্টারেক্টিভ সরঞ্জাম পেয়েছি, যা আপনাকে দ্রুত ডিরেক্টরি মাপের সম্পর্কে একটি ওভারভিউ দেয়। বছরের পর বছর ধরে সেই ধরণের সরঞ্জামের সন্ধান করা।

  • ফাইল শ্রেণিবদ্ধ মাধ্যমে দ্রুত ড্রিলডাউন
  • আপনি সরঞ্জামের অভ্যন্তরীণ থেকে উদাহরণস্বরূপ বিশাল অস্থায়ী ফাইল মুছতে পারেন
  • অত্যন্ত দ্রুত

কমান্ড লাইনের জন্য এটি বাওবাব হিসাবে ভাবুন :

apt-get install ncdu

11
এটি একেবারে দুর্দান্ত!
ওএসএক্সের

3
ncduঅসাধারণ! এটি ইনস্টল করার পরে, কেবল এটি করুন ncdu /। আপনি খুব দ্রুত সিস্টেমে বৃহত্তম ফাইলগুলি খুঁজে পাবেন। hএনসিডু-র কনসোল ইন্টারফেসের ভিতরেও টিপুন ।
এটিতে

এটি আমার যা প্রয়োজন তা হ'ল: এত সহজ, এত দক্ষ। খাঁটি ভালোবাসা.
ব্যবহারকারী 3790897

52

এটি পুনরাবৃত্ত আকারে আকারটি সন্ধান করে এবং প্রতিটি ফোল্ডারের নামের পাশে, নীচে মোট আকারের পাশাপাশি সমস্তটি মানবিক বিন্যাসে রাখে

du -hsc *


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

9

নীচে আমি মোট, ফোল্ডার এবং ফাইলের আকার মুদ্রণ করতে ব্যবহার করছি:

$ 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

4

উত্তরগুলি স্পষ্ট করে দিয়েছে যে duএটি কোনও ডিরেক্টরিতে মোট আকার খুঁজে বের করার সরঞ্জাম। তবে কয়েকটি বিষয় বিবেচনা করতে হবে:

  • কখনও কখনও duআউটপুট বিভ্রান্তিমূলক হতে পারে কারণ এটি ফাইল সিস্টেম দ্বারা বরাদ্দকৃত স্থানের প্রতিবেদন করে, যা পৃথক ফাইলের আকারের যোগফল থেকে আলাদা হতে পারে। সাধারণত যদি আপনি এটিতে কেবল একটি অক্ষর সংরক্ষণ করেন তবে ফাইল সিস্টেম 4096 বাইটের জন্য একটি ফাইল বরাদ্দ করবে!

  • 2 পাওয়ার এবং 10 ইউনিটের পাওয়ারের কারণে আউটপুট পার্থক্য। -hস্যুইচ করার du2 ^ 10 (1024), 2 ^ 20 (1048576) ইত্যাদি দ্বারা বাইটের সংখ্যা ভাগ মানুষের পাঠযোগ্য আউটপুট দিতে। অনেকেরই 10 টি (যেমন 1 কে = 1000, 1 এম = 1000000) পাওয়ার দেখার অভ্যাস থাকতে পারে এবং ফলাফলটি দেখে অবাক হন।

কোনও ডিরেক্টরিতে, বাইটে সমস্ত ফাইলের আকারের মোট যোগফল খুঁজতে, করুন:

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

উদাহরণ:

$ du -s -B 1
255729664

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

খোঁজ-LS-awk বৃহৎ ফোল্ডার জন্য একটি ভুল মান ফিরে আসবে # 1 । আরও নতুন জাজের জন্য আপনি যুক্ত করতে পারেন --bignumবা -M; যদি এটি বিকল্প না হয় তবে find . -ls | tr -s ' '|cut -d' ' -f 7| paste -sd+ |bc # 2 ব্যবহার করুন ।
গুজেজ

2 টির ক্ষমতার ব্যবহার যদি সমস্যা হয় তবে --siবিকল্প রয়েছে: "লাইক-এ, তবে 1024 নয় 1000 এর শক্তি ব্যবহার করুন"
মুরু

1

কেবল পঠনযোগ্য ফর্ম্যাটে ডিরেক্টরি আকারের জন্য, নীচে ব্যবহার করুন:

du -hs directoryname

এটি সম্ভবত সঠিক বিভাগে নেই, তবে কমান্ড লাইন থেকে আপনি চেষ্টা করতে পারেন:

ls -sh filename

-sআকার, এবং -hমানুষের পাঠযোগ্য।

নীচে মত তালিকায় -lপ্রদর্শন করতে ব্যবহার করুন ls:

ls -shl

0

du /foldernameএকটি ফোল্ডারের আকার জানার জন্য স্ট্যান্ডার্ড কমান্ড। ম্যান পৃষ্ঠাটি পড়ে বিকল্পগুলি সন্ধান করা ভাল অনুশীলন:

man du

কমান্ডটি ব্যবহার করার আগে আপনার ম্যান পৃষ্ঠাটি ( অনলাইনে উপলব্ধ ) পড়া উচিত ।


0

এখানে একটি পসিক্স স্ক্রিপ্ট রয়েছে যা এর সাথে কাজ করবে:

  • একটি নথি
  • নথি পত্র
  • একটি ডিরেক্টরি
  • ডিরেক্টরি
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

উৎস


0

যদি আপনার পছন্দসই ডিরেক্টরিতে অনেকগুলি উপ-ডিরেক্টরি থাকে তবে নিম্নলিখিতগুলি ব্যবহার করুন:

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

-সি, - মোট একটি গ্র্যান্ড টোটাল উত্পাদন করে -
প্রতিটি আর্গুমেন্টের জন্য কেবলমাত্র সংক্ষিপ্ত বিবরণ প্রদর্শন করুন
-h, মানব পঠনযোগ্য বিন্যাসে হিউম্যান-রিডেবল প্রিন্ট মাপ (যেমন, 1 কে 234 এম 2 জি)

যা বর্তমান ডিরেক্টরিতে সমস্ত ফাইল / ফোল্ডার দ্বারা সামগ্রিকভাবে মেমরির ব্যবহার করবে।


-1

আমার মনে হয় সেরাটি হ'ল নিম্নলিখিতটি:

du -h directory_name | tail -n1

এটি আপনাকে যে ডিরেক্টরিটি আগ্রহী সেগুলির কেবলমাত্র আকারটি প্রদর্শন করবে এবং সেই ডিরেক্টরিতে কোনও ডিরেক্টরি এবং ফাইলের আকার মুদ্রণ করবে না।

আমার যুক্ত করা উচিত যে ফোল্ডারের আকার যদি বড় হয় তবে du আরও সময় নেয়। এই আদেশটি কাজ করার জন্য আপনাকে অবশ্যই ধৈর্য ধরতে হবে। অন্য কোনও ইউনিক্স কমান্ডের মতোই আপনি timeএই কমান্ডের আগে ব্যবহার করে এই প্রক্রিয়াটির মোট সময় জানতে পারবেন :

time du -h directory_name | tail -n1

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