ডিরেক্টরিতে সমস্ত এক্সটেনশান এবং তাদের সম্পর্কিত ফাইল গণনা পান


14

কোনও ডিরেক্টরিতে সমস্ত এক্সটেনশন পাওয়া: সহজ। একটি নির্দিষ্ট বর্ধনের জন্য ফাইল গণনা: সহজ easy

তবে সমস্ত ফাইল এক্সটেনশান এবং তাদের নিজ নিজ ফাইল গণনা পাওয়া আমাকে ইঙ্গিত করছে।

যেমন।

+ dir
 + abc.txt
 + def.txt
 + abc.pdf
 * def.pov

যেমন কিছু ফেরত দেওয়া উচিত:

.txt 2
.pdf 1
.pov 1

এই অনুশীলনের উদ্দেশ্যটি হ'ল আমি অনুসন্ধান করতে চাই যে কোন ফাইল এক্সটেনশান একটি নির্দিষ্ট ডিরেক্টরিতে জনপ্রিয়।

আগাম ধন্যবাদ

উত্তর:


47
/var/cache$ sudo find ./ -type f | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' | sort | uniq -c | sort -n
      1 .6
      1 .cache
      1 .noconf
      1 .php
      1 .sl
      2 .bin
      2 .el
      2 .tdb
      4 .baseA
      4 .baseB
      4 .dat
      4 .DB
     27 .db
    221 .deb

এখানে ব্যাখ্যার কথা:

find ./ -type f

ডিরেক্টরি নয়, কেবল ফাইল সন্ধান করুন

grep -E ".*\.[a-zA-Z0-9]*$"

এক্সটেনশন সহ ফিল্টার ফাইল

sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/'

পাথ এবং ফাইলের নাম মুছুন, কেবল এক্সটেনশন সংরক্ষণ করুন

sort | uniq -c | sort -n

বাছাই, ইউনিট এবং সাজান


আপনি আপনার রেজেক্সকে এক্সটেনশনে আরও অক্ষরের মঞ্জুরি দিতে এবং এটি করে মুছে grepsed -ne '/\.[^./]*$/s/.*\(\.[^.]*\)$/\1/p'
ফেলাতে পারেন

ডেনিস, গ্রেপ প্রতিস্থাপন এবং আপনার এসডের সাহায্যে নিম্নলিখিত ত্রুটিটি ফিরে আসে: সেড: -e এক্সপ্রেশন # 1, চর 30: অবৈধ রেফারেন্স \ 1 এর command 's কমান্ডের আরএইচএস
ডেনারমালাইজার

2

যেহেতু আপনি লিনাক্স (gnu grep) ব্যবহার করছেন তাই পার্ল আরইএস (পিসিআরই) -Pএবং গ্রেপের -oবিকল্পটি ব্যবহার করার জন্য এটি ভাল সময় । দুর্দান্ত প্রার্থী হিসাবে @ বাইন্ডবনের উত্তর গ্রহণ করা:

find . -type f | grep -Po '\.([\w\d])*$' | sort | uniq -c | sort -n
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.