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

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

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

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

কমান্ড du "ডিরেক্টরিগুলির জন্য পুনরাবৃত্তভাবে প্রতিটি ফাইলের ডিস্ক ব্যবহারের সংক্ষিপ্তসার জানায়," যেমন,

du -hs /path/to/directory
  • -h সংখ্যা "মানুষের পাঠযোগ্য" পেতে হয়, যেমন পেতে 140M পরিবর্তে 143260 (কেবিটে আকার)
  • -s সংক্ষিপ্তসার জন্য (অন্যথায় আপনি কেবল ফোল্ডারের আকারই পাবেন না তবে সমস্ত কিছুর জন্যও পাবেন মধ্যে ফোল্ডার আলাদাভাবে)

আপনি ব্যবহার করছেন হিসাবে -h আপনি ব্যবহার করে মানুষের পাঠযোগ্য মান বাছাই করতে পারেন

du -h | sort -h

দ্য -h পতাকা sort "মানুষের পাঠযোগ্য" আকার মান বিবেচনা করবে.


পৌনঃপুনিকভাবে সব ফাইল এবং ডিরেক্টরি তালিকা এড়াতে চান, আপনি সরবরাহ করতে পারেন --max-depth পরামিতি প্রদর্শন করা হয় কিভাবে অনেক আইটেম সীমাবদ্ধ. সর্বাধিক সাধারণ, --max-depth=1

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

সম্প্রতি আমি দ্রুত আপনি ডিরেক্টরি মাপ সম্পর্কে একটি ওভারভিউ দেয় যে ইন্টারেক্টিভ টুল ভিত্তিক একটি মহান, এনসিআরএসএস, পাওয়া যায় নি. বছরের পর বছর ধরে টুল যে ধরনের জন্য অনুসন্ধান.

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

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

apt-get install ncdu

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

du -hsc *

উপভোগ করুন!

du foldername

এই কমান্ড সম্পর্কে আরও তথ্য এখানে

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

$ 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/lib992K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results292K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target 52K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files

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

উত্তর এটা স্পষ্ট যে করেছেন du একটি ডিরেক্টরি মোট আকার এটি টুল. তবে কয়েকটি বিষয় বিবেচনা করতে হবে:

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

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

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

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

উদাহরণ:

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

আপনি টুল ধুলো ব্যবহার করতে পারেন:

PS C:\git> dust   0B       ┌── templates           │                                      █ │   0%   0B     ┌─┴ git-core              │                                      █ │   0%   0B   ┌─┴ share                   │                                      █ │   0%  76B   ├── readme.md               │                                      █ │   0% 156K   │   ┌── less.exe            │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ │   2% 2.7M   │   ├── git-remote-https.exe│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█████████████████ │  42% 3.6M   │   ├── git.exe             │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██████████████████████ │  56% 6.5M   │ ┌─┴ git-core              │███████████████████████████████████████ │ 100% 6.5M   ├─┴ libexec                 │███████████████████████████████████████ │ 100% 6.5M ┌─┴ .                         │███████████████████████████████████████ │ 100%

আমার উদাহরণটি উইন্ডোজ থেকে, তবে লিনাক্স এবং অ্যাপলও সমর্থিত:

https://github.com/bootandy/dust

আমি শর্তযুক্ত করছি ll কমান্ড যা উপনীত হয় ls -alF. এটা ঠিক নীচে ফাইল একটি ফাইল গণনা এবং আকার অনুপস্থিত. আমি সঙ্গে অভিনয় du এবং tree কিন্তু আমি প্রয়োজন সমষ্টিগুলি পেতে পারে না. তাই আমি তৈরি করেছি lll আমার জন্য এটা করতে.

আপনার মধ্যে ~/.bashrc নিম্নলিখিত রাখুন:

lll () {    ls -alF "$@"    arr=($(ls -alF "$@" | awk '{TOTAL+=$5} END {print NR, TOTAL}'))    printf " \33[1;31m ${arr[0]}\33[m line(s).  "    printf "Total size: \33[1;31m ${arr[1]}\33[m\n"#    printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"}

ফাইলটি সংরক্ষণ করুন এবং এটি ব্যবহার করে সংস্থান করুন . ~/.bashrc (অথবা আপনি আপনার টার্মিনাল পুনরায় আরম্ভ করতে পারেন).


নমুনা আউটপুট

সম্পর্কে সুন্দর জিনিস ll আউটপুট এটা রং হয়. এই সঙ্গে বজায় রাখা হয় lll কিন্তু ব্যবহার করার সময় হারিয়ে গেছে find অথবা du:

lll sample output.png


টিএল; ডিআর

আপনি যোগ করতে পারেন একটি বোনাস ফাংশন ~/.bashrc বলা হয় BytesToHuman(). এটি বেশিরভাগ কনসোল ব্যবহারকারীরা বিপুল সংখ্যক এমআইবি, জিআইবি ইত্যাদিতে রূপান্তর করার প্রত্যাশা করবে:

function BytesToHuman() {    # https://unix.stackexchange.com/questions/44040/a-standard-tool-to-convert-a-byte-count-into-human-kib-mib-etc-like-du-ls1/259254#259254    read StdIn    b=${StdIn:-0}; d=''; s=0; S=(Bytes {K,M,G,T,E,P,Y,Z}iB)    while ((b > 1024)); do        d="$(printf ".%02d" $((b % 1024 * 100 / 1024)))"        b=$((b / 1024))        let s++    done    echo "$b$d ${S[$s]}"} # BytesToHuman ()

পরবর্তী দুই লাইনের মধ্যে মন্তব্য টুসকি lll () ফাংশন এই মত চেহারা:

#    printf "Total size: \33[1;31m ${arr[1]}\33[m\n"    printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"

এখন আপনার আউটপুট এই মত দেখায়:

lll sample output 2.png

সর্বদা হিসাবে সঙ্গে পুনরায় উৎস করতে ভুলবেন না . ~/.bashrc যখনই পরিবর্তন (অথবা অবশ্যই টার্মিনাল পুনরায় আরম্ভ করুন)

দ্রষ্টব্য-স্ব-সঙ্গরোধ দুই সপ্তাহ অবশেষে আমাকে এই পাঁচ বছর বয়সী লক্ষ্য কাজ করার সময় দিয়েছে.

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

man du

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

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