ফলাফলগুলি কীভাবে "মানব-পঠনযোগ্য" ফাইলের আকার প্রদর্শন করবেন?


11

আমি আমার সেন্টোস সার্ভারে সমস্ত বড় ফাইলগুলি সন্ধান করার চেষ্টা করছি। আমি ব্যবহার করছি তা করতে:

find / -maxdepth 10 -size +100000 -ls

আমি পরিবর্তন চেষ্টা -lsকরতে -lshকিন্তু এটা মঞ্জুরিপ্রাপ্ত নয়।

আমি কীভাবে মানব-পঠনযোগ্য মাপের (কে, এম, প্রত্যয় ব্যবহার করে) এই ফলাফলগুলি প্রদর্শন করতে পারি?


মানুষের পাঠযোগ্য জন্য আপনার সংজ্ঞা কী? আমার জন্য এটি যথেষ্ট পরিমাণে পাঠযোগ্য।
manatwork

আপনার fileসাথে ইউটিলিটি চেষ্টা করা উচিত find
রমেশ

@ মানটওয়ার্ক কেবি, এমবি,
জিবি

উত্তর:


10

findঅত্যাধুনিক বিকল্প নেই ls। আপনি যদি চান ls -h, আপনি কল করতে হবে ls

find / -maxdepth 10 -size +100000 -exec ls -lh {} +

আমি -xdevঅন্য ফাইল সিস্টেমে পুনরাবৃত্তি এড়াতে বিকল্পের পরামর্শ দিচ্ছি , যদি আপনি ডিস্কের জায়গার বিষয়ে উদ্বিগ্ন হন তবে এটি অকেজো হবে।

find / -xdev -maxdepth 10 -size +100000 -exec ls -lh {} +

আপনি যদি শেল হিসাবে zsh ব্যবহার করেন তবে ব্যবহারের পরিবর্তে findআপনি গ্লোব কোয়ালিফায়ার ব্যবহার করতে পারেন। ফাইলের আকার সীমাবদ্ধ করা সহজ: Lএকটি আকার অনুসরণ করে; সংখ্যার আগে আকারের একটি alচ্ছিক ইউনিট থাকতে পারে। আপনি যদি সর্বোচ্চ গভীরতার বিষয়ে চিন্তা না করেন তবে আপনি **/সাব-ডিরেক্টরিতে পুনরাবৃত্তি করতে ব্যবহার করতে পারেন । আপনি যদি সর্বাধিক গভীরতার বিষয়ে চিন্তা করেন তবে এটি আরও জটিল কারণ zsh গ্লোব নিদর্শনগুলিতে "সর্বাধিক n ঘটনা" প্রকাশ করার উপায় নেই c ক্রস-ডিভাইস পুনরাবৃত্তি এড়াতে, dগ্লোব কোয়ালিফায়ার ব্যবহার করুন ; আপনাকে ডিভাইস নম্বরটি সন্ধান করতে হবে, যা আপনি statলিনাক্সের আওতায় কমান্ড ( stat -c %d /কেবল সংখ্যাটি প্রদর্শন করতে) বা zsh এর নিজস্ব statবিল্টিন সহ ( zmodload zsh/statএটি লোড করার জন্য চালনা করুন ) প্রদর্শন করতে পারেন।

ls -lh /**/*(L+M99d$(stat -c %d /))

4

আপনি যে আদেশটি চেষ্টা করছেন তা আমার কাছে পাঠযোগ্য। তবে, আপনি নীচের মতো সন্ধানের সাথে ফাইলটি ইউটিলিটিটি ব্যবহার করতে পারেন।

find / -maxdepth 10 -size +100000 -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print

এটি করার আরেকটি উপায় হ'ল নীচের কমান্ডটি ব্যবহার করা।

du -BM / | sort -nr

উপরের কমান্ডটি বাছাই করা ফাইল আকারে ফাইলগুলি আপনাকে দেবে।

আপনি যদি কোরিউটিলস> 7.5 ব্যবহার করছেন তবে ফাইলগুলি মাপ অনুসারে তালিকাবদ্ধ করতে নীচের কমান্ডটি জারি করতে পারেন।

du -ah / | grep -v "/$" | sort -h

আমার মেশিনে, আমার কাছে sort -hবিকল্পটি ছিল না ।

আপনি মন্তব্যে উল্লেখ করেছে, আপনার মানুষের পাঠযোগ্য বিন্যাসে ফাইলের মধ্যে আকার থাকা উচিত KB , MB বা গিগাবাইট । আমি উত্তর হিসাবে পোস্ট করা দ্বিতীয় আদেশের সাথে যেতে চাই। আমার সিস্টেমে এটি ব্যবহার করার সময় যে আউটপুটটি পেয়েছিলাম তা হ'ল

du -BM /home/ramesh/chk1/ | sort -nr

50M     /home/ramesh/chk1/
21M     /home/ramesh/chk1/Hierarchical_Clustering_Working
3M      /home/ramesh/chk1/checking_files
1M      /home/ramesh/chk1/checking/checking2
1M      /home/ramesh/chk1/checking/checking1
1M      /home/ramesh/chk1/checking/asdf
1M      /home/ramesh/chk1/checking

আপনার দ্বিতীয় কমান্ডের উপর একটি নিম্ন সীমা নির্ধারণ করার কোনও উপায় আছে কি? বৃহত্তম ফাইলগুলি শীর্ষে উপস্থিত হয় এবং দ্রুত শেলের সম্পাদনার শীর্ষে অদৃশ্য হয়ে যায় - আমি দেখতে পাচ্ছি যে আপনাকে কেবল অপসারণ করতে হবে
ব্লার্গ

> outputকমান্ডে যোগ করে আপনি আউটপুটটিকে কোনও ফাইলে পুনর্নির্দেশ করতে পারেন । তারপরে, আপনি ফাইলটি খুলতে এবং নিজের ইচ্ছে মতো আউটপুটটি দেখতে পারেন :)
রমেশ

আমি এই ফোল্ডারগুলিও প্রদর্শন করি, যেখানে আমি কেবল ফাইলগুলি পরেই থাকি
ব্লগার করুন

du -a --max-depth=10 / | sort -rnকাছাকাছি আমি সঙ্গে আসতে পারে। তবে, এই ক্ষেত্রে এটি কেবি, এমবি বা জিবি আকার প্রদর্শন করবে না।
রমেশ

1

আমি মনে করি আপনি পরে যা করছেন তা নীচের মতো।

find / -maxdepth 10 -size +100000 -exec ls -lah {} + 

-execআপনি যদি একটি কমান্ডটি ব্যবহার করতে পারবেন এবং {}খোঁজ ফল দ্বারা প্রতিস্থাপিত হয়। শেষ অবধি এটি +হ'ল এটি আদেশটির শেষ এবং এটি প্রয়োজনীয় is


2
এটিকে {}এখানে উদ্ধৃত করা সম্পূর্ণ অপ্রয়োজনীয় । কমান্ডের একক উদ্ধৃতি শেলের জন্য তবে শেলটি কমান্ডটি কখনই দেখতে পাবে না ls -lah <args...>- এটি দেখায় {}, যা উদ্ধৃত করার দরকার নেই। এটিই findএটি দেখায় ls -lah {}এবং এটিই findপ্রসারিত করে {}এবং -execবিকল্পটির নাম অনুসারে , সরাসরি আর্গুমেন্টগুলিতে findএকটি exec*সিস্টেম কল ব্যবহার করে, তাই স্পেসগুলি নিয়ে কোনও সমস্যা হবে না কারণ findশব্দ বিভাজন করতে যাচ্ছে না s আপনার ফাইলের নামগুলিতে।
jw013

1
-aবিকল্প lsঅপ্রয়োজনীয় যেহেতু আর্গুমেন্ট ফাইল এবং না ডিরেক্টরি হবে বলে আশা করা হয়। জিএনইউ বিকল্পটির ls -dilsজন্য ব্যবহারগুলি সন্ধান করে -ls, যাতে এটির প্রতি ঘনিষ্ঠভাবে প্রতিলিপি করা যায় ls -dilsh
jw013

মানুষ খুঁজে ব্যবহারের প্রথম উদাহরণস্বরূপ নিম্নলিখিত দেয় -exec : find . -type f -exec file '{}' \; চালায় ফাইল অথবা বর্তমান ডিরেক্টরী নিচে যে ফাইলে। লক্ষ্য করুন যে বন্ধনীগুলি শেল স্ক্রিপ্ট বিরামচিহ্ন হিসাবে ব্যাখ্যা থেকে তাদের রক্ষা করতে একক উদ্ধৃতি চিহ্নগুলিতে আবদ্ধ। সেমিকোলনটি একইভাবে ব্যাকস্ল্যাশ ব্যবহার করে সুরক্ষিত থাকে, যদিও একক উদ্ধৃতিও সেই ক্ষেত্রে ব্যবহার করতে পারত।
টিম হিউজেস

1
ম্যান পৃষ্ঠাটি কিছুটা অপ্রয়োজনীয় সাবধানতার পক্ষে পরামর্শ দিচ্ছে। এটি ক্ষতিগ্রস্থ হবে না, তবে {}উদ্ধৃত হওয়া কোনও শেল সম্পর্কে আমি অবগত নই ।
jw013
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.