Extension du` কমান্ড দ্বারা নির্দিষ্ট এক্সটেনশনের মোট ফাইল আকার কীভাবে প্রদর্শিত হয়


11

আমার একটি ডিরেক্টরিতে কয়েকশো পিডিএফ ফাইল এবং এইচটিএমএল ফাইল রয়েছে। এবং আমি পিডিএফ ফাইলগুলির মোট আকার জানতে চাই।

কমান্ড অনুসারে du -ch /var/fooআমি মোট ফাইলের আকার দেখতে পাচ্ছি তবে আমার কেবল সর্বশেষ লাইন, মোট আকারের প্রয়োজন।

ডিরেক্টরিতে যদি কেবলমাত্র পিডিএফ ফাইল থাকে তবে আমি -sবিকল্পটি ব্যবহার করতে পারি , তবে বিকল্পটি এবার ব্যবহার করা যাবে না।

আমি কীভাবে নির্দিষ্ট ফাইলের ধরণের মোট আকার পেতে পারি?


আপনি কি ব্যবহার করতে পারেন du -sh /foo/*.pdf?
বাগওয়াধর

2
du -ch /var/foo/*.pdf | tail -n 1
don_crissti

উত্তর:


10

জিএনইউ du(অর্থাত্ এমবেডেড লিনাক্স বা সিগউইন) এর সাহায্যে আপনি --excludeযে ফাইলগুলি মেলে না তা বাদ দিতে বিকল্পটি ব্যবহার করতে পারেন ।

du -s --exclude='*.html' /var/foo

আপনি যদি *.pdfফাইলগুলি ইতিবাচকভাবে মেলে নিতে চান তবে আপনার ফাইলগুলি তালিকাভুক্ত করতে অন্য কিছু পদ্ধতি ব্যবহার করতে duহবে এবং কমপক্ষে আর্গুমেন্টের জন্য একটি আউটপুট লাইন প্রদর্শন করতে হবে, পাশাপাশি বিকল্পের সাথে একটি দুর্দান্ত মোট প্রদর্শন করবে -c। আপনি tailশেষ লাইন ব্যতীত সমস্ত মুছে ফেলার জন্য কল করতে পারেন, বা পাশাপাশি "টোটাল" শব্দটি সরিয়ে ফেলতে পারেন। সেই এক ডিরেক্টরিতে ফাইলগুলি গণনা করতে, শেলটিতে ওয়াইল্ডকার্ড ব্যবহার করুন।

du -sc /var/foo/*.pdf | tail -n1
du -sc /var/foo/*.pdf | sed -n '$s/\t.*//p'

আপনার যদি সাব ডাইরেক্টরিগুলিতেও পাশাপাশি ফাইলগুলি ট্র্যাভার করতে হয় তবে আপনার শেল যদি এটি সমর্থন করে তবে findকোনও **/প্যাটার্ন ব্যবহার করুন বা ব্যবহার করুন । জন্য **/, ব্যাশ, প্রথম রান shopt -s extglob, এবং মনে রাখবেন 4.2 পর্যন্ত ব্যাশ সংস্করণ ডিরেক্টরি প্রতি সিম্বলিক লিঙ্ক তর্ক হবে; zsh এ, এটি বাক্সের বাইরে কাজ করে।

du -sc /var/foo/**/*.pdf | tail -n1

সন্ধান সংস্করণটির সাথে একটি অতিরিক্ত জটিলতা হ'ল যদি প্রচুর ফাইল থাকে তবে কমান্ড লাইনের দৈর্ঘ্যের সীমাতে রাখা একাধিকবার findচালিত duহবে। ওয়াইল্ডকার্ড পদ্ধতিতে যদি এমনটি ঘটে তবে আপনি একটি ত্রুটি পাবেন ("কমান্ড লাইনের দৈর্ঘ্যের সীমা অতিক্রম করে")। নিম্নলিখিত কোডটি ধরে নিয়েছে যে আপনার কাছে কোনও নিউলাইন যুক্ত কোনও ফাইলের মিল নেই।

find /var/foo -name '*.pdf' -exec du -sc {} + |
awk '$2 == "total" {total += $1} END {print total}'

(সম্ভবত বাস্তবে এটি --exclude='*.html'কোনও সমস্যা /var/foo/dir.html/foo.pdfনয় তবে নোটের কারণ হিসাবে এটি বাদ দেওয়াও ডিরেক্টরি ট্র্যাভারসালকে প্রভাবিত করে; এছাড়াও, /var/fooনিজের সাথে ডিরেক্টরিগুলির ডিস্ক ব্যবহারের জন্যও গণ্য হবে)
স্টাফেন চেজেলাস

3

আপনি শেলটি ফাইলগুলি প্রসারিত করতে দিতে পারেন:

$ mkdir foo
$ echo "abc" > foo/1.pdf
$ echo "abcd" > foo/2.pdf
$ echo "abcd" > foo/3.html
$ du -ch foo/*.pdf
4,0K    foo/1.pdf
4,0K    foo/2.pdf
8,0K    total

তবে আপনি দেখতে পাচ্ছেন এটি সৃজিত হিসাবে প্রায় 1000 বার ফাইলসাইজ করে izes আরও ভাল বিকল্পটি বিকল্পটি ব্যবহার করা হচ্ছে -b:

$ du -cbh foo/*.pdf
4   foo/1.pdf
5   foo/2.pdf
9   total

বড় আকারের ফাইল আকারগুলি এখনও মানুষের পঠনযোগ্য আকারে প্রদর্শিত হবে 173K। যেমন ।


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