ডিরেক্টরিতে থাকা ফাইলগুলির জন্য সমস্ত অনন্য এক্সটেনশান তালিকাবদ্ধ করুন


11

আমি একটি নির্দিষ্ট ডিরেক্টরিতে থাকা ফাইলগুলির অনন্য এক্সটেনশনটি দেখতে চাই। বাশে তা করার আদেশ কী?

কেউ find . -type fবর্তমান ডিরেক্টরিতে সমস্ত ফাইল পেতে ব্যবহার করতে পারে , তারপরে এক্সটেনশানটি স্ট্রিপ করে এবং এতে পাইপ করতে পারে uniq। এক্সটেনশনটি ছড়িয়ে দেওয়ার সহজতম উপায় কী?

উত্তর:


15

এটা চেষ্টা কর:

find . -type f | sed -rn 's|.*/[^/]+\.([^/.]+)$|\1|p' | sort -u

এটি এর জন্য কিছুই দেয় না:

  • কোনও এক্সটেনশন ছাড়াই ফাইল
  • নামের সাথে ফাইলগুলি যে কোনও বিন্দুতে শেষ হয়
  • লুকানো ফাইল

এটিতে পাইপ দেওয়াও কার্যকর হতে পারে sort | uniq -c


আমার ম্যাকের ডিফল্ট সেডের সাথে কাজ করে না। আমি পেয়েছিsed: illegal option -- r
dzhelil

8
@celil: ব্যবহার -Eপরিবর্তে -rউপর OS X এর
বিরাম দেওয়া পরবর্তী ঘোষণা না হওয়া পর্যন্ত।

3
find . -type f | sed -E 's/.+[\./]([^/\.]+)/\1/' | sort -u

এক্সটেনশন ছাড়াই ফাইলগুলি বাদে ওএস এক্সে কাজ করে। আমার ডাউনলোড ফোল্ডার:

DS_Store
dmg
exe
localized
msi
nib
plist
pmproj
rar
tgz
txt
webloc
zip

sed -rপরিবর্তে আপনার প্রয়োজন হতে পারে ?


গৌণ সমস্যা: এক্সটেনশন ছাড়াই ফাইলগুলি তাদের নাম মুদ্রণ করে। লুকানো ফাইল (যেমন .DS_Store) নেতৃত্ব ছাড়াই তাদের নাম মুদ্রণ করে .


আমি এর sort -uপরিবর্তে সুপারিশ করব sort | uniq। কম কাঁটাচামচ এবং সংস্থান ব্যবহার
জন টি

ধন্যবাদ @ জন সেলিলের "কাঠামোর" মধ্যে রাখার চেষ্টা করেছি, তাই আমি এটি ভেবে দেখিনি।
ড্যানিয়েল বেক

ভিতরে কোনও বিন্দু থেকে বাঁচার দরকার নেই []
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

3

এম্বেড করা নিউলাইনসযুক্ত ফাইলের নাম দ্বারা বিভ্রান্ত না হওয়া এবং sort -uzফাইল এক্সটেনশানগুলিকে সঠিকভাবে এম্বেড করা নিউলাইনগুলিকে সঠিকভাবে সাজানোর জন্য এখানে আরও একটি সমাধান রয়েছে:

# [^.]: exclude dotfiles
find . -type f -name "[^.]*.*" -exec bash -c '
   printf "%s\000" "${@##*.}" # get the extensions and nul-terminate each of them
' argv0 '{}' + |
sort -uz | 
tr '\0' '\n' | 
nl

3

এক্সটেনশানটি ছড়িয়ে দেওয়ার দ্রুত এবং সহজ উপায় মনে করে সমস্ত ফাইলের নামটি "নাম.ইেক্সট" ফর্ম্যাটটি ধারণ করে তারপরে ব্যবহার করুন:

 ls -1 | cut -d"." -f2- | sort | uniq -c

এটি সেখানে কতগুলি অনন্য এক্সটেনশন রয়েছে তার একটি গণনা দেয়, উদাহরণস্বরূপ:

   1 sh  
   3 txt  
   4 txt.Z  
  17 dat  
  72 dat.gz  

1

দেখুন, এজন্যই আমি অ্যাজকে পছন্দ করি:

find . -type f | awk -F "." '{ print $(NF) }' | sort -u
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.