এক্ষেত্রে জিএনইউ find
আপনাকে পাইপ এবং সম্ভাব্য সমস্যাজনক পার্সিংকে বাদ দিয়ে এই সমস্ত কাজ একসাথে করতে দেয় ls
:
find . -maxdepth 1 -name '[^.]*' \
-regextype posix-extended -regex "MYPATTERN" \
-printf 'SOMEPREFIX %f SOMESUFFIX\n'
( find
অবশ্যই অন্যান্য কমান্ডের আউটপুটটিকে নির্বিচারে পরিবর্তন করার ভাল উপায় নয়!)
কিছু নোট:
-maxdepth 1
এবং -name [^.]*
নামের সাথে মিলে যাওয়া কাজটিকে সমতল ls
(বা ls .
) এর মতো করে তোলে । আপনি যে কোনও শেল-স্টাইল গ্লোব ব্যবহার করতে পারেন তবে নোট করুন যে "*" একটি শীর্ষস্থানীয়ের সাথে মিলবে "। একটি নামে † অসদৃশ bash
, তাই [^.]*
কিছু মানে নেই একটি নেতৃস্থানীয় "।"
- MYPATTERN হ'ল যথাযথ পসিক্স পূর্ব (ডিফল্ট টাইপটি ইমাকস, এখানে দেখুন ) তবে এটি অবশ্যই পুরো ফাইলের সাথে মেলে তাই
.*thing.*
কেবল পরিবর্তে এর মতো কিছু ব্যবহার করুনthing
- আপনি সম্ভবত দুজনের পরিবর্তে
-name
/ এর মধ্যে একটি ব্যবহার করতে পারেন -regex
(উদাঃ -রেজেক্স "[^।]। মাইপ্যাটার্ন। "
-printf
সমর্থন জিনিষ প্রচুর , %n
অনলঙ্কৃত ফাইল অথবা ডাইরেক্টরি নাম
† (এটি আপনার সংস্করণটির উপর নির্ভর করতে পারে find
, আপনার ম্যান পৃষ্ঠার "স্ট্যান্ডার্ডস কনফারেন্স" বিভাগটি পরীক্ষা করুন)
প্রয়োজনীয় কোন বহিরাগত প্রোগ্রাম সঙ্গে একটি সম্ভাব্য বিকল্প হিসেবে bash
রয়েছে compgen
যা অন্যান্য বিষয়ের মধ্যে, একটি থেকে globs, সমতুল্য বিস্তৃতি ls
কোন বিকল্প সহ:
compgen -P "someprefix>" -S "<somesuffix" -G "pattern"
এটি নিউলাইনগুলি সহ সাদা জায়গা সহ ফাইলের নামগুলি পরিচালনা করে। compgen -G "*"
সমতল হিসাবে একই আউটপুট সরবরাহ করা উচিত ls
(তবে মনে রাখবেন যে ls *
এটি সম্পূর্ণ আলাদা জিনিস different আপনার এখনও প্রয়োজন হবে grep
, এবং এটি সমস্যা সমাধান করতে পারে বা নাও পারে, তবে এটি উল্লেখ করার মতো।
ls
- এটি খারাপ জুজু। এছাড়াও, এটি হতে হবেgrep
? এবং আপনি কিছু উদাহরণ আউটপুট দিতে পারেন?