শুধুমাত্র ফাইলের ডু দিয়ে আকার অর্জন করা


50

Du কমান্ডটি ব্যবহার করে আমি এর উপ-ডিরেক্টরিতে সমস্ত ফাইল এবং সমস্ত ফাইলের আকার পেতে পারি।

আমি সমস্ত ফাইলের আকার (এবং উপ ডিরেক্টরিতে ফাইলগুলি) পেতে নিম্নলিখিত কমান্ডটি চেষ্টা করছি

find . -type f | du -a

তবে এটি ফোল্ডারের মাপগুলিও ছাপে। আমি কীভাবে সাব ডিরেক্টরিতে সমস্ত ফাইল এবং ফাইলের মাপের একটি তালিকা পেতে পারি? আমিও চেষ্টা exec flagকিন্তু আমি কিভাবে নিশ্চিত নল আরেকটি কমান্ড মধ্যে আউটপুট এটা ফল executes পর am findমধ্যে du

অপারেটিং সিস্টেমটি এআইএক্স 6.1 কেএস শেলের সাথে রয়েছে।

উত্তর:


56

আমি সাধারণত -execইউটিলিটি ব্যবহার করি । এটার মত:

find . -type f -exec du -a {} +

আমি এটি জিএনইউ অনুসন্ধানের সাথে ব্যাশ এবং ksh উভয় ক্ষেত্রেই চেষ্টা করেছি। আমি কখনই এআইএক্স চেষ্টা করিনি, তবে আমি নিশ্চিত আপনার সন্ধানের সংস্করণটিতে কিছু -execবাক্য গঠন রয়েছে।

নিম্নলিখিত স্নিপেট তালিকাটি সাজান, বৃহত্তম বৃহত্তম:

find . -type f -exec du -a {} + | sort -n -r | less

3
আপনার যদি find -print0জিএনইউ বৈশিষ্ট্যগুলি অ্যাক্সেস না থাকে তবে আমি এই উত্তরটি সহ যাব । যদি উপলভ্য থাকে তবে এর \;সাথে প্রতিস্থাপনের \+ফলে কম ডাকা হবে duএবং এইভাবে আরও ভাল পারফরম্যান্স হবে।
jw013

ধন্যবাদ, এটি দুর্দান্ত কাজ করে বিশেষত যেহেতু বিভিন্ন ইউনিটে আকারের জন্য একটি পতাকা সরবরাহ করে।
শারদুল উপাধ্যায়

+অপশনটিতে আমি তথ্য খুঁজে পাইনি । এটি একটি বিকল্প duবা জন্য find? এবং কেন এটি কম কল ফলাফল?
আমেলিও ওয়াজকেজ-রেইনা

1
এটি একটি স্ট্যান্ডার্ড বিকল্প find। এটি execকমান্ডের (আমাদের ক্ষেত্রে du) কেবল একবার নির্দিষ্ট করে , কমান্ডের findক্রমাগত যুক্তি হিসাবে দেওয়া সমস্ত ফলাফল ।
রাহমু

ডাব্লুটিএফ, কেন এখানে কমান্ড নেইdu -f --threshold=1G
আলেকজান্ডার মিলস

16

আপনার যদি জিএনইউ ইউটিলিটি থাকে তবে চেষ্টা করুন

find . -type f -print0 | du --files0-from=-

কমান্ডটি ব্যর্থ হচ্ছে প্রিন্ট0 বলতে বৈধ কমান্ড নয় এবং শেষ বিয়োগটি একটি স্বীকৃত পতাকা ছিল না। আমি মনে করি না এই পদ্ধতির কাজ হবে কারণ man duএকটি filesবা fromপতাকা তালিকাভুক্ত নয় ।
শারদুল উপাধ্যায়

প্রশ্নের আপনার ট্যাগ হিসাবে আপনার অপারেটিং সিস্টেমটি যুক্ত করা উচিত। আমি ধরে নিয়েছিলাম আপনার জিএনইউ আছে তবে তা উল্লেখ করতে ভুলে গেছেন।
jw013

1
আমার উপর একটি উত্সাহ আছে! আপনার নির্দিষ্ট সমাধানটি du -chমিলিয়ে মোটামুটি ফাইলগুলি find . -name 'blah blah.*' -print0 | du --files0-from=- -ch
আনার জন্য কাজ

9

আমি সাধারণত:

find . -type f -print0 | xargs -r0 du -a

জার্গস সাধারণত কমান্ড কল করে, কোনও আর্গুমেন্ট পাস না করা হলেও; xargs du </dev/nullএখনও ডাকা xargs -r du </dev/nullহবে , ডু কল হবে না। -0সম্পর্কে newline পরিবর্তে নাল-সমাপ্ত স্ট্রিং জন্য যুক্তি সৌন্দর্য সমাপ্ত করা হয়েছে।

তারপরে আমি মোটটি | awk '{sum+=$1} END {print sum}'পেতে সাধারণত শেষ করি।


2
then I usually addসোনার :-) মূল্য
Radek

2

দীর্ঘ প্যারামিটারের নাম এবং মানব বাছাই সহ এখানে একটি সংস্করণ।

find . -type f -exec du --human {} + | sort --human --reverse | head

আমি -a/--allপাস করার প্রয়োজন নেই দেখেছি du


-2

বর্তমান dir নির্দিষ্ট ফাইল

du -ch files*

খাটো এবং আমার জন্য কাজ করে

du -sh .

বর্তমান দির এবং সাব সমস্ত ফাইলের জন্য

ডু (জিএনইউ কোর্টিলস) 8.30


1
(1) আপনি কী বলতে চাচ্ছেন du -ch files*? ধরুন বর্তমান ডিরেক্টরি ধারণকারী ant, apple, banana, bat, cat, corn, date, এবং dog, যেখানে পশু নাম সাবডিরেক্টরি এবং ফল / সবজি নাম ফাইল - কি কমান্ড আপনি শুধু ফাইল পেতে ব্যবহার করতে হবে? বা আপনি কি বোঝাতে চেয়েছিলেন তা নয়? (২)  du -sh .বর্তমান ডিরেক্টরিতে এবং এর অধীনে থাকা সমস্ত কিছুর কেবলমাত্র বৃহৎ প্রতিবেদন করবে এবং ফাইলগুলি এগুলি নিজেই নয় at এটি প্রশ্নটি যা চেয়েছিল তার ঠিক বিপরীত।
জি-ম্যান 23
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.