স্থান অপসারণ এবং খালি করার জন্য বড় ফাইল / ডিরেক্টরিগুলি সন্ধান করার একটি কমান্ড লাইন উপায় কী?


202

একাধিক কমান্ডের সন্ধান করছি যা আমাকে ড্রাইভের বৃহত্তম ফাইলগুলি দেখায়।


গ্রাফিকাল কিছু ঠিক আছে?
RolandiXor

5
নাহ, ssh কমান্ড লাইনে চলছে।
রায়ান ডিটজেল

কী অদ্ভুত তা হল আমার কাছে দুটি সার্ভার রয়েছে যা একই জিনিস চলছে। একটিতে 50% ডিস্ক ব্যবহার হয় এবং অন্যটি 99% হয়। এর কারণ কী তা আমি খুঁজে পাচ্ছি না।
রায়ান ডিটজেল

সুতরাং আমি বিভ্রান্ত হয়ে পড়েছি, এটি 98% du এর সাথে ব্যবহৃত হয়েছে তবে আমি যখন জিটি 5 অ্যাপটি চালাতাম
রায়ান ডিটজেল

উত্তর:


275

আপনার যদি কেবল বড় ফাইলগুলি সন্ধান করতে findহয় তবে আপনি -sizeবিকল্পটি ব্যবহার করতে পারেন । পরবর্তী কমান্ডটি 10MiB এর চেয়ে বড় সমস্ত ফাইলের তালিকা করবে ( 10MB দিয়ে বিভ্রান্ত হবে না ):

find / -size +10M -ls

আপনি যদি কোনও নির্দিষ্ট আকারের মধ্যে ফাইলগুলি সন্ধান করতে চান তবে আপনি এটি একটি "আকারের চেয়ে কম" অনুসন্ধানের সাথে একত্রিত করতে পারেন। পরবর্তী কমান্ডটি 10MiB এবং 12MiB এর মধ্যে ফাইলগুলি সন্ধান করবে:

find / -size +10M -size -12M -ls

apt-cache search 'disk usage'ডিস্ক ব্যবহার বিশ্লেষণের জন্য উপলব্ধ কিছু প্রোগ্রামের তালিকাবদ্ধ করে। একটি আবেদন যা খুব আশাব্যঞ্জক দেখাচ্ছে gt5

প্যাকেজ বিবরণ থেকে:

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

জিটি 5 এর স্ক্রিনশট

জিটি 5 এর "সম্পর্কিত প্যাকেজগুলি" বিভাগে , আমি খুঁজে পেয়েছি ncdu। এর প্যাকেজ বিবরণ থেকে:

এনসিডিডু হ'ল একটি এনক্রাস ভিত্তিক ডু ভিউয়ার। এটি বিখ্যাত ডু ইউটিলিটির মাধ্যমে একটি দ্রুত এবং সহজেই ব্যবহারযোগ্য ইন্টারফেস সরবরাহ করে। এটি ডিরেক্টরিগুলি ব্রাউজ করতে এবং ncurses লাইব্রেরি সহ ডিস্ক ব্যবহারের শতাংশ দেখায়।

এনসিডিইউর স্ক্রিনশট


3
এনসিডিইউ খুব দ্রুত এবং ঠিক আমার যা প্রয়োজন, ধন্যবাদ! আমি জিটি 5 ব্যবহার করেও চেষ্টা করেছি, তবে কেবল এটি বাতিল করে দিয়েছি কারণ এটি "দীর্ঘ" ভাবনা ছিল / কোনও প্রতিক্রিয়া
লুকাশ

7
পবিত্র বোকা, এনসিডিউ আশ্চর্যজনক, আপনার অনুসন্ধানগুলি ভাগ করার জন্য আপনাকে ধন্যবাদ!
যদিও E-

এনসিডিডু যদি আরও শক্তিশালী দেখানো হয় তবে আমি পছন্দ করব । আমার একবারে এটি প্রয়োজন এবং আমি নামটি মনে করতে পারি না।
মার্টিন থোমা

এনসিডু :) এর জন্য কমান্ডগুলি যথেষ্ট মনে রাখবেন :)
মিঃ কোডার

1
@ ম্যাট নাপ, আউটপুটটির আউটপুট ফর্ম্যাটটি -lsহার্ডকোডযুক্ত রয়েছে (এর জন্য সোর্স কোড pred_flsএবং list_file ফাংশন দেখুন)। আপনি -printfবিকল্পটি ব্যবহার করে আউটপুট আনুমানিক করার চেষ্টা করতে পারেন, find ... -type f -exec ls -ldh {} \; | column -t
আড্ডা

33

আমি কেবল duএবং এর সংমিশ্রণটি ব্যবহার করি sort

sudo du -sx /* 2>/dev/null | sort -n

0   /cdrom
0   /initrd.img
0   /lib64
0   /proc
0   /sys
0   /vmlinuz
4   /lost+found
4   /mnt
4   /nonexistent
4   /selinux
8   /export
36  /media
56  /scratchbox
200 /srv
804 /dev
4884    /root
8052    /bin
8600    /tmp
9136    /sbin
11888   /lib32
23100   /etc
66480   /boot
501072  /web
514516  /lib
984492  /opt
3503984 /var
7956192 /usr
74235656    /home

তারপরে এটি ধুয়ে ফেলা এবং পুনরাবৃত্তি করার একটি কেস । আপনার মনে হয় এমন সাব-ডাইরেক্টরিগুলি লক্ষ্য করে নিন যেগুলি খুব বড়, তাদের জন্য কমান্ডটি চালান এবং সমস্যাটি কী কারণে ঘটছে তা খুঁজে বের করুন।

দ্রষ্টব্য: আমি ব্যবহার duএর -xপতাকা জিনিস এক ফাইলসিস্টেম (আমি এসএসডি এবং RAID5 মধ্যে ক্রস মাউন্ট জিনিষ বেশ জটিল ব্যবস্থা আছে) সীমাবদ্ধ রাখা।

দ্রষ্টব্য 2: যে 2>/dev/nullকোনও ত্রুটি বার্তাকে বিস্মরণে পুনর্নির্দেশ করে। যদি তারা আপনাকে বিরক্ত না করে তবে এটি বাধ্যতামূলক নয়।


1
আমি যখন এই কমান্ডটি চালনা করি তখন ডু চাইল্ড ডিরেক্টরিতে নেমে আসে। থেকে duman পৃষ্ঠা: "প্রতিটি ফাইলের ডিস্কের ব্যবহার সংক্ষেপ, যাও recursively ডিরেক্টরি জন্য।"
জ্যামি

26

আমার প্রিয় সমাধানটি বেশ কয়েকটি ভাল উত্তরের মিশ্রণ ব্যবহার করে।

du -aBM 2>/dev/null | sort -nr | head -n 50 | more

du যুক্তি:

  • -a"সমস্ত" ফাইল এবং ডিরেক্টরিগুলির জন্য। এটি কেবল ডিরেক্টরিগুলির জন্য ছেড়ে দিন
  • -BM মেগাবাইট (এম) ব্লক আকার (বি) এ আকারগুলি আউটপুট করতে
  • 2>/dev/null - "অনুমতি অস্বীকৃত" ত্রুটি বার্তা বাদ দিন (ধন্যবাদ @ অলি)

sort যুক্তি:

  • -n "সংখ্যার" জন্য
  • -r "বিপরীত" এর জন্য (সবচেয়ে বড় থেকে ছোট)

head যুক্তি:

  • -n 50 শুধুমাত্র শীর্ষ 50 ফলাফলের জন্য।
  • আরও moreকম নম্বর ব্যবহার করা ছেড়ে দিন

দ্রষ্টব্য: sudoআপনার অ্যাকাউন্টে অ্যাক্সেসের অনুমতি নেই এমন ডিরেক্টরি অন্তর্ভুক্ত করার জন্য উপসর্গ ।

/ ভারে শীর্ষস্থানীয় 10 বৃহত্তম ফাইল এবং ডিরেক্টরিগুলি দেখানোর উদাহরণ (গ্র্যান্ড মোট সহ)।

cd /var
sudo du -aBM 2>/dev/null | sort -nr | head -n 10
7555M   .
6794M   ./lib
5902M   ./lib/mysql
3987M   ./lib/mysql/my_database_dir
1825M   ./lib/mysql/my_database_dir/a_big_table.ibd
997M    ./lib/mysql/my_database_dir/another_big_table.ibd
657M    ./log
629M    ./log/apache2
587M    ./log/apache2/ssl_access.log
273M    ./cache

10

কিবিবি এর উত্তর সঠিক তবে এটি অনেক ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ফাইল থাকবে যেহেতু এটি প্রতিটি আইটেমের জন্য একটি নতুন এলএস প্রক্রিয়া শুরু করবে।

শিশু প্রক্রিয়াগুলি ছাড়াই সন্ধানের সাহায্যে একটি দ্রুত সংস্করণ হ'ল বাইট (% s) এবং পাথ (% পি) এ আকার মুদ্রণের জন্য প্রিন্টফ ব্যবহার করা হবে

find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries


1
নিশ্চিত করুন যে এটি অনেক দ্রুত
কুকি

10

বর্তমান ফোল্ডারে বৃহত্তম টপ -20 ডিরেক্টরিগুলি (পুনরাবৃত্তভাবে) প্রদর্শন করতে, নিম্নলিখিত ওয়ান-লাইনারটি ব্যবহার করুন:

du -ah . | sort -rh | head -20

বা (আরও ইউনিক্স ভিত্তিক):

du -a . | sort -rn | head -20

বর্তমান ডিরেক্টরিতে শীর্ষ -২০ টি বৃহত্তম ফাইলের জন্য (পুনরাবৃত্তভাবে):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

বা মানব পাঠযোগ্য আকার সহ:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

দয়া করে মনে রাখবেন যে -hএটি sortকেবল জিএনইউর জন্য উপলব্ধ , সুতরাং এটি ওএসএক্স / বিএসডি সঠিকভাবে কাজ করতে আপনাকে এটিকে ইনস্টল করতে হবে coreutils। তারপরে এর ফোল্ডারটি আপনারটিতে যুক্ত করুন PATH

সুতরাং এই এলিয়াসগুলি আপনার আরসি ফাইলগুলিতে থাকার জন্য দরকারী (প্রতিবার যখন আপনার প্রয়োজন হবে):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

8

এটি এর জন্য নিখুঁত প্রয়োগের মতো বলে মনে হচ্ছে find:

find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5

এই কমান্ডটি ডিরেক্টরিগুলিতে সমস্ত ফাইল সন্ধান করবে $DIRECTORYএবং ls -sসেগুলি সম্পাদন করবে। শেষ কমান্ডটি একটি ফাইলের প্লাস্টিকের ফাইলের বরাদ্দ করা মাপ প্রিন্ট করে। ফলাফল সংখ্যাগতভাবে বাছাই করা হয় এবং শেষ পাঁচটি এন্ট্রি প্রদর্শিত হয়। সুতরাং ফলস্বরূপ আপনি সবচেয়ে বড় 5 ফাইল $DIRETORYবা যে কোনও উপ-ডিরেক্টরিতে দেখবেন । আপনি প্রবেশ করলে tail -n 1আপনি কেবলমাত্র বৃহত্তম ফাইল দেখতে পাবেন।

তবুও আপনি এর সাথে প্রচুর পরিমাণে খেলতে পারেন find। উদাহরণস্বরূপ আপনি এমন ফাইল সন্ধান করতে পারবেন যা n দিনের ( -ctime -n) বা বিশেষ ব্যবহারকারীদের ( -user johndoe) এর চেয়ে কম বয়সী are


5

যখন আমার সার্ভারগুলিতে আরও ফাঁকা স্থান প্রয়োজন তখন আমি এই কমান্ডটি ব্যবহার করি। এটি 502 মেগাবাইটের পরে সমস্ত ফাইল বড় এবং "ডু- এইচ" ফাইলগুলির আরও ভাল তালিকা তৈরি করে এবং পাইপের পরে "সাজানো-এন" ফাইলের আকারের অনুসারে সংখ্যার কাঠির তালিকা তৈরি করে।

find / -size +50M -type f -exec du -h {} \; | sort -n

1

বাওবাব চেষ্টা করুন, এটি আপনাকে ফাইল এবং ফোল্ডারগুলির একটি গ্রাফিকাল ওভারভিউ দেয়, আপনি আসল স্পেস হগগুলি কোথায় তা দেখতে পারেন এবং একটি ক্লিকের মাধ্যমে সেগুলি মুছুন https://help.ubuntu.com/commune/Baobab


2
এই বিশেষ প্রশ্নে, ওপি একটি কমান্ড লাইন পদ্ধতি পছন্দ করে। প্রশ্নের মন্তব্য দেখুন। আমি প্রশ্নটিও সম্পাদনা করব।

1

উদাহরণস্বরূপ সমস্ত জিবি ফাইল সন্ধান করতে আমি ডু এবং গ্রেপ ব্যবহার করব, যদিও এখানে উল্লিখিত অন্যান্য পদ্ধতিগুলিও দুর্দান্ত বলে মনে হচ্ছে।

du -h -a /dir | grep "[0-9]G\b"  

আপনি ডুতে থাকা - বাদে বিকল্পের সাথে অভিনবতা পেতে পারেন।


0

আপনি আকার দ্বারা ফাইল বাছাই করতে পারে:

find . -type f -exec du -h {} \; | sort -k1 -h

এটি du -hপ্রতিটি ফাইলের জন্য কেবল ফাইলগুলি এবং সম্পাদন করে, যা ফাইলের আকার দেখায়। শেষ অবধি, আমরা প্রথম কলাম অনুসারে find/ এর আউটপুটটি duসারণি করি (মানব পাঠযোগ্য বিন্যাসে)।

সর্বশেষ মুদ্রিত ফাইলটি সবচেয়ে বড়।


0

ডিরেক্টরিগুলি এড়িয়ে যাওয়ার সময় আপনি বৃহত্তম ফাইলগুলি দেখতে কমান্ডটি ব্যবহার করতে পারেন:

sudo find / -type f -printf “%s\t%p\n” | sort -n | tail -1
find $HOME -type f -printf ‘%s %p\n’ | sort -nr | head -10

100MiB এর চেয়ে বড় ফাইলগুলি খুঁজে পেতে (এটি 100MB নয়, আপনি বিভ্রান্ত হলে এখানে দেখুন ):

find / -size +100M -ls

নীচের কমান্ডটি ফোল্ডারে বৃহত্তম 5 ফাইল প্রদর্শন করবে $DIRECTORY:

find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5

ব্যবহার du: নীচের কমান্ডটি যা ডু ব্যবহার করে, হোম ওয়ার্কিং ফোল্ডারে 20 টি বৃহত্তম আকারের ডিরেক্টরিগুলি প্রদর্শন করে:

sudo du -a /home | sort -n -r | head -n 20

এখন সাব-ফোল্ডার সহ বৃহত্তম ডিরেক্টরি / ফাইল প্রদর্শন করার জন্য, চালান:

du -Sh | sort -rh | head -n 10

ব্যবহার ls:

/ বিন ডিরেক্টরিতে শীর্ষস্থানীয় পাঁচটি ফাইলের তালিকা করতে, নীচের কমান্ডটি ইস্যু করুন:

ls -lSh /bin | head -5

উদাহরণস্বরূপ আপনি এখানে ডিস্ক ব্যবহার বিশ্লেষক বা বাওবাও যেমন ব্যবহার করেছেন তেমন ব্যবহার করতে পারেন ।


0

অনুরূপ প্রশ্নের উত্তরে উল্লেখ করা একটি দুর্দান্ত, ব্যবহারকারী-বান্ধব সরঞ্জাম হ'ল NCurses Disk Usageসরঞ্জাম:

sudo ncdu /

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