'ডু' এবং 'ট্রি' এর সেরাটি একত্রিত করুন


21

আমি ভাবছি যে আমরা কি 'ডু' এর সততা একত্রিত করতে পারি 'গাছ' এর ইন্ডিটেড বিন্যাসের সাথে। যদি আমি ডিরেক্টরিগুলির মাপের একটি তালিকা চাই:

du -hx -d2

... দুটি স্তরের গভীর প্রদর্শন করে এবং সমস্ত আকারের সংক্ষিপ্তসারগুলি সৎ, তবে সাবডিয়ারগুলির কোনও ইনডেন্টিং নেই। অন্য দিকে:

tree --du -shaC -L 2

... ইনডেন্টস এবং রঙিন সুন্দরভাবে তবে রিপোর্ট করা মাপগুলি মিথ্যা। আসল আকারগুলি পেতে একটি অবশ্যই:

tree --du -shaC

... যার অর্থ হ'ল আপনি যদি 'ট্রি' আপনাকে পুরো ডিরেক্টরি কাঠামোটি দেখান তবেই আপনি সত্যিকারের আকার পাবেন। আমি কতটা সাবডিয়ার প্রকৃতপক্ষে প্রদর্শন করতে চাই তা বিবেচনা না করেই সর্বদা সঠিক আকারের সারসংক্ষেপগুলি রাখতে সক্ষম হতে চাই। আমি প্রায়শই এটি করি:

tree -du -shaC | grep "\[01;34m"

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

উত্তর:


8

এছাড়াও চেকআউট এনসিডু : http://dev.yorhel.nl/ncdu

এর পৃষ্ঠাতে অন্যান্য "অনুরূপ প্রকল্পগুলি" তালিকাভুক্ত করা হয়েছে:

জিটি 5 - এনসিডু-র সাথে বেশ সমান, তবে ভিন্ন পদ্ধতির।

tdu - আরেকটি ছোট ncurses- ভিত্তিক ডিস্ক ব্যবহারের ভিজুয়ালাইজেশন ইউটিলিটি।

ট্রিভিজ - জিটিকে, ট্রিভিউ ব্যবহার করে।

বাওবাব - জিটিকে, পাই-চার্ট, একটি ট্রিভিউ এবং একটি বৃক্ষের মানচিত্র ব্যবহার করে। জিনোম নিয়ে আসে।

জিডিএম্যাপ - জিটিকে, একটি ট্রিম্যাপ ডিসপ্লে সহ।

ফাইললাইট - কে-ডি, পাই-চার্ট ব্যবহার করে।

কেডিআরস্ট্যাট - কেডিআর, একটি ট্রিম্যাপ ডিসপ্লে সহ।

কিউডিস্ক ইউজেজ - কিউটি, পাই-চার্ট ব্যবহার করে।

xdiskusage - এফএলটিকে, একটি ট্রিম্যাপ ডিসপ্লে সহ।

fsv - 3 ডি ভিজুয়ালাইজেশন।

ফাইলসাইট - ফাইললাইটের ওয়েব-ভিত্তিক ক্লোন।


1
ধন্যবাদ ডেভিড, অবশেষে সেগুলির দিকে তাকাতে চাইল। আমি এনসিডু বাছাই করেছি।
রে অ্যান্ড্রুজ

@ ডেভিড টিডিউ কোথা থেকে আসে?
শিরিশ

@ শিরীশ আমার উত্সটি দেখুন, উপরে উল্লিখিত
ডেভিড পোটোনিক

11

রঙ কোডের জন্য আপনার গ্রেপ করার দরকার নেই, -dবিকল্পটি list directories only

এটি আপনার যা করতে চায় তা মনে হচ্ছে:

$ tree --du -d -shaC | grep -Ev '(  *[^ ]* ){2}\['
.
├── [  18]  dir1
├── [  30]  dir2
├── [ 205]  junk
│   ├── [  18]  dir1
│   ├── [  30]  dir2
│   └── [  76]  dir3
├── [ 119]  merge
└── [  20]  stuff

 4.4K used in 10 directories

grepকমান্ড সব লাইন যে আছে দুইবার, একটি দ্বারা অনুসরণ (এক বা একাধিক স্পেস একটি অ-স্পেস একটি স্থান দ্বারা অনুসরণ থাকে) সরিয়ে ফেলা হবে [

আপনি যদি 1 এর গভীরতা চান তবে ly ly কোঁকড়া ধনুর্বন্ধনীগুলির মধ্যে সীমাবদ্ধ গণনাটিকে {1}পরিবর্তে পরিবর্তিত করুন {2}। যদি আপনি 3 এর গভীরতা চান তবে এটিতে পরিবর্তন করুন {3}

আপনি এটিকে শেল ফাংশনে রূপান্তর করতে পারেন:

mytreedu() {
  local depth=''

  while getopts "L:" opt ; do
      case "$opt" in
          L) depth="$OPTARG" ;;
      esac
  done

  shift "$((OPTIND-1))"

  if [ -z "$depth" ] ; then
      tree --du -d -shaC "$@"
  else   
      local PATTERN='(  *[^ ]* ){'"$depth"'}\['
      tree --du -d -shaC "$@" | grep -Ev "$PATTERN"
  fi
}

এটি কমান্ড লাইন থেকে getoptsকোনও -Lবিকল্প এবং তার যুক্তি "চুরি" করতে ব্যবহার করে tree, যদি সেখানে একটি থাকে। যদি -L nকমান্ড লাইনে কোনও বিকল্প না থাকে , তবে এটিও কার্যকর হয়।

অন্যান্য সমস্ত অপশন এবং আরোগুলি treeকমান্ডে প্রেরণ করা হয়েছে ।

local PATTERN=...লাইন সত্যিই প্রয়োজন হয় না। আমি কেবল এটির মতো করেছিলাম তা নিশ্চিত করার জন্য এটি এখানে একটি লাইনে ফিট করে এবং এখানে শব্দ-মোড়ানো নয় U&L। নিয়মিত প্রকাশটি সম্ভবত সরাসরি tree | grep ...লাইনে চলে যেতে পারে ।

এটি এইভাবে চালান:

mytreedu 

অথবা

mytreedu -L 2 /path/to/dir/

1
আমি কোডটি পছন্দ করি তবে পুনরাবৃত্তি করছি যে আপনি '-d' ব্যবহার করতে পারবেন না কারণ যদি আপনি করেন তবে আকারের সংক্ষিপ্তসারগুলি ভুল হয় বা কমপক্ষে সেগুলি এখানে থাকে। আকারটি সর্বদা '4096' হিসাবে জানানো হবে যা দির নিজেই প্রবেশের আকার, তবে এটির সমস্ত সামগ্রীর আকার নয়।
রায় অ্যান্ড্রুজ

... বর্তমান ডিরেক্টরিতে প্রতিটি ডিরেক্টরিতে '4096' বলা উচিত ছিল ... তবে আপনি দিরের ফাইলগুলি সহ মাপ পাবেন না।
রায় অ্যান্ড্রুজ

আপনি কেবল -Lএকটি সমস্যা হিসাবে উল্লেখ করেছেন, কিছু উল্লেখ করেননি -d। এখন যেহেতু আমি নম্বরে আরো ঘনিষ্ঠভাবে চেহারা রিপোর্ট, তন্ন তন্ন tree --duনা tree --du -dরিপোর্ট মাপ যে কোন ভাবেই দ্বারা রিপোর্ট মিল du
কাশ

100% ডিসপ্লে-এর চেয়ে কম যে কোনও কিছু আপনাকে সঠিক মাপ দেয় না Point আপনি '-d' বা '-L 2' বা অন্য যে কোনও কিছু দিয়ে সীমাবদ্ধ করতে পারেন - এটি প্রদর্শিত হয় না, এটি আকারে গণনা করা হয় না।
রে অ্যান্ড্রুজ

tree --duডিরেক্টরিগুলির জন্য বা ছাড়া -dবা ছাড়াই যাইহোক ডিরেক্টরিগুলির জন্য সঠিক মাপ দেয় বলে মনে হয় না -L। সংখ্যাগুলি কী হতে হবে তা আমার কোনও ধারণা নেই তবে তারা কী duরিপোর্টের সাথে সম্পর্কিত নয় ।
কাশ

3

আপনি dutree ব্যবহার করতে পারেন

এখানে চিত্র বর্ণনা লিখুন

  • রঙিন আউটপুট, LS_COLORS পরিবেশ পরিবর্তনশীল অনুযায়ী।
  • ফাইল সিস্টেম ট্রি প্রদর্শন করুন
  • ছোট ফাইলগুলিকে একত্রিত করার ক্ষমতা
  • ফাইল বা ডিরেক্টরি বাদ দেওয়ার ক্ষমতা
  • বিভিন্ন ডিরেক্টরি তুলনা করার ক্ষমতা
  • দ্রুত, মরিচা লেখা

1

এটি করার জন্য কোনও নিখুঁত কমান্ড সরঞ্জাম নেই, তবে আমি দুটি উপায় ঘনিষ্ঠভাবে খুঁজে পেয়েছি are

  • ফোল্ডার এবং ফাইলের আকার উভয়ই দেখায়, তবে বৃক্ষ মোডে দেখানো হচ্ছে না।

    du -ah --max-depth=1 /var/log

  • ট্রি মোডে দেখায় তবে কেবল ফাইলের আকার, ফোল্ডারগুলি গণনা করা হয়

    tree -ah /var/log -L 1


0

কাস দ্বারা অনুপ্রাণিত, আমি এখন এটি করছি:

treee ()
{
    integer levels=$(( ($1 + 1) * 4 ))
    tree --du -shaC | grep "\[01;34m" | grep -Ev "^[^\[]{$levels}\[*"
    du -sh .
}

আপনি যদি সমস্ত দখল জিনিসগুলি ফেলে দিতে চলেছেন তবে আপনার কমপক্ষে "$@"তাত্ক্ষণিকভাবে পরে থাকা উচিত -shaC। অন্যথায় function ফাংশনটি কেবলমাত্র বর্তমান ডিরেক্টরিতে কাজ করার জন্য হার্ড-কোডড।
কাশ

একবার আমরা জিনিসটি কাজ করার পরে, আমি আপনাকে সে সম্পর্কে জিজ্ঞাসা করতে যাচ্ছি: দয়া করে বিস্তারিত বলুন। অবশ্যই "$ @" সম্পর্কে অবশ্যই, তবে এখন পর্যন্ত আমি এটি কেবলমাত্র বর্তমান ডিয়ারটিতেই ব্যবহার করি, তাই এখনও এটি লক্ষ্য করি নি। এই সমস্ত 'getopts' স্টাফ আমার কাছে নতুন, আমি সেখানে আপনি কী ভাবছেন তা জানতে চাই।
রে অ্যান্ড্রুজ

ব্যবহারের getoptsএকটি সুবিধা হ'ল কমান্ড লাইনের যে কোনও ক্রমে বিকল্পগুলি উপস্থিত হতে পারে। mytreeআমি যে ফাংশনটি লিখেছিলাম তার প্রাথমিক সংস্করণ আপনার "as 1" ব্যবহার করেছিল ঠিক তেমনই গভীরতার আর্গুমেন্টটি প্রথম যুক্তি হতে হবে এবং এটি alচ্ছিক ছিল না। আমি সিদ্ধান্ত নিয়েছি যে যথেষ্টটা ভাল ছিল না তাই বিকল্পটি getoptsপ্রক্রিয়া করার জন্য ব্যাশ-বিল্টিন ব্যবহার করুন -L। এটি -L nবিকল্পটি কমান্ড লাইনের যে কোনও জায়গায় উপস্থিত হতে দেয় । এটি একেবারে alচ্ছিকভাবে অনুমতি দেয়।
কেস

এটি দেখার আরেকটি উপায় হ'ল getoptsআপনাকে এমন স্ক্রিপ্টগুলি লেখার অনুমতি দেয় যা আপনার সিস্টেমের অন্যান্য প্রোগ্রামগুলির মতোই সত্যিকারের বিকল্প এবং তর্কগুলি ((1 $ 2 $ 3 ইত্যাদির মতো হার্ড-কোডেড পজিশনে কেবল অর্গগুলি না দিয়ে) লিখতে পারে। এবং আপনি যদি প্যাকেজটি থেকে getoptপ্রোগ্রামটি (এটি ছাড়া একটি নোট করুন s) ব্যবহার করেন তবে আপনি GNU প্রোগ্রামের মতো util-linuxসংক্ষিপ্ত একক-বর্ণের বিকল্পগুলি (যেমন -l) এবং দীর্ঘ বিকল্পগুলি ( যেমন ) উভয়ই ব্যবহার করতে পারেন --long
কাস

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