যদি আপনি চেহারাটি ব্যবহার করতে পারেন তবে গৃহীত উত্তরটি ঠিক আছে। তবে এই সমস্যাটি সমাধান করার জন্য আরও একটি পদ্ধতি রয়েছে।
আমরা যদি এই প্রশ্নের জন্য বিস্তৃত প্রস্তাবিত রেজেক্সটি দেখি:
.*[^a]$
আমরা দেখতে পাবো যে এটি প্রায় কাজ করে। এটি কোনও খালি স্ট্রিং গ্রহণ করে না, যা কিছুটা অসুবিধেয় হতে পারে। তবে, কেবল একটি চরিত্রের সাথে ডিল করার সময় এটি একটি ছোটখাটো সমস্যা। তবে, আমরা যদি পুরো স্ট্রিং বাদ দিতে চাই, যেমন "abc", তবে:
.*[^a][^b][^c]$
করবে না উদাহরণস্বরূপ এটি এসি গ্রহণ করবে না।
যদিও এই সমস্যার সহজ সমাধান রয়েছে। আমরা কেবল বলতে পারি:
.{,2}$|.*[^a][^b][^c]$
বা আরও সাধারণ সংস্করণ:
.{,n-1}$|.*[^firstchar][^secondchar]$
স্ট্রিং তোমাদেরকে নিষেধ (জন্য চান দৈর্ঘ্য যেখানে n হল abcএটা 3 এর) এবং firstchar, secondchar... প্রথম, আপনার স্ট্রিং এর দ্বিতীয় ... n তম অক্ষর (জন্য abcএটি হবে a, তারপর b, তারপর c)।
এটি একটি সাধারণ পর্যবেক্ষণ থেকে আসে যে পাঠ্যটির চেয়ে ছোট যে স্ট্রিংটি আমরা নিষিদ্ধ করব না সংজ্ঞা অনুসারে এই পাঠ্যটি ধারণ করতে পারে না। সুতরাং আমরা হয় স্বল্পতর যে কোনও কিছু গ্রহণ করতে পারি ("আব" "অ্যাবসি" নয়), বা আমাদের গ্রহণের জন্য যথেষ্ট দীর্ঘ কিছু কিন্তু শেষ না করেই গ্রহণ করতে পারি।
এখানে অনুসন্ধানের উদাহরণ রয়েছে যা .jpg নয় এমন সমস্ত ফাইল মুছে ফেলবে:
find . -regex '.{,3}$|.*[^.][^j][^p][^g]$' -delete