বড় হাতের এক্সটেনশান সহ ফাইলের নামগুলি সন্ধান করুন


2

একটি ডিরেক্টরিতে পুনরাবৃত্তভাবে বড় হাতের অক্ষরে তাদের এক্সটেনশনের সমস্ত ফাইল আমি কীভাবে সন্ধান করতে পারি।

আমি চেষ্টা করেছিলাম :

$ find -name "*.[A-Z][A-Z][A-Z]"

কাজ করে মনে হচ্ছে তবে অবশ্যই এটি শেষ বিন্দুর পরে 3 টিরও বেশি অক্ষরের ফাইল চেক করে না।

উত্তর:


5

নিম্নলিখিত সাধারণ ক্ষেত্রে কাজ করে:

find -name "*.*[A-Z]*" ! -name "*.*[^A-Z]*"

নামে দুটি বা তার বেশি বিন্দুযুক্ত ফাইলগুলির জন্য ব্যর্থ হওয়া দায়বদ্ধ। এই ক্ষেত্রে আপনার নিয়মিত এক্সপ্রেশন ব্যবহার করা দরকার, উদাহরণস্বরূপ grep:

find | grep '\.[A-Z][A-Z]*$'

বা egrep:

find | egrep '\.[A-Z]+$'

কামিল ম্যাকিয়েরোভস্কির মন্তব্যের পরে, উত্তরটি [:upper:]স্থান A-Zহিসাবে ব্যবহার করে স্থানীয়ভাবে স্বাধীন করা যেতে পারে :

find | egrep '\.[[:upper:]]+$'

আমি আশঙ্কা করি যে আমরা স্থানীয়-ইংরেজি স্পিকাররা সহজেই এই জাতীয় বিষয়গুলি ভুলে যেতে পারি।



@ কামিলম্যাসিওরওস্কি - একটি বৈধ পয়েন্ট তবে এটি প্রশ্নকর্তা যিনি মূলত পরামর্শ দিয়েছিলেন যে [A-Z]তিনি যা চেয়েছিলেন।
এএফএইচ

2

আপনি রি-রিজেস বিকল্পটি ব্যবহার করতে পারেন

find -regextype posix-egrep -regex '.*\.[A-Z]{3}'

অনুসন্ধানের সাথে আরई ব্যবহার করে কিছু পয়েন্ট রয়েছে, আমি শিখলাম যে পিটি_বিআর বইতে।

-regexবিকল্পটি পুরো পথটি মেলাতে চায়, তাই .*আপনি যে সত্যিকারের আরই মিলতে চান তার আগে সমস্ত কিছু মেলে। যদি আরই মাঝখানে .*হতে পারে তবে অন্যটি অবশ্যই শেষে থাকতে হবে।

-regextypeবলে যা মেটা-অক্ষর বা পলান করা আবশ্যক নয়।

আমি যা জানি তা ইউনিক্স / বিএসডি find -E-তে সমস্ত মেটা-অক্ষরকে অনস্কেপড করার অনুমতি দেয় এবং জিএনইউ / লিনাক্সে একই -regextype posix-extended, -regextype posix-awkবা -regextype posix-egrep


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.