উত্তর:
শেল ফাইলের নাম গ্লোব্বিং এবং নিয়মিত প্রকাশগুলি একই অক্ষরগুলির কয়েকটি ব্যবহার করে এবং এগুলির একই উদ্দেশ্য রয়েছে তবে আপনি ঠিক বলেছেন, তারা সামঞ্জস্যপূর্ণ নয়। ফাইলের নাম গ্লোববিং অনেক কম শক্তিশালী সিস্টেম।
ফাইলের নাম গ্লোববিং:
*
এর অর্থ "শূন্য বা আরও বেশি অক্ষর"
?
অর্থ "যে কোনও একক চরিত্র"
তবে রেজিজেসে আপনাকে .*
"শূন্য বা আরও বেশি অক্ষর" বোঝাতে হবে এবং এর .
অর্থ "কোনও একক অক্ষর"। ?
রেজিজেসগুলির মধ্যে একটি অর্থ কিছুটা আলাদা: শূন্য বা পূর্ববর্তী আরই উপাদানটির একটি উদাহরণ।
স্কয়ার বন্ধনী ( []
) কমপক্ষে সহজ ক্ষেত্রে, আমি যে সিস্টেমে এটি টাইপ করছি তার উভয় সিস্টেমে একই রকম কাজ করতে দেখা যায়। এর মধ্যে পসিক্স অক্ষর শ্রেণীর মতো জিনিস অন্তর্ভুক্ত থাকে (যেমন [:alpha:]
)। এটি বলেছে, যদি আপনার বিভিন্ন কমান্ড সিস্টেমের ধরণের কাজ করার জন্য আপনার কমান্ডগুলির প্রয়োজন হয় তবে আমি প্রাথমিক জিনিসগুলির বাইরে যেমন অক্ষরের তালিকা (উদাহরণস্বরূপ [abeq]
) এবং সম্ভবত চরিত্রের ব্যাপ্তি (উদাঃ [a-c]
) ব্যবহার করার বিরুদ্ধে পরামর্শ দিই ।
এই পার্থক্যগুলির অর্থ দুটি সিস্টেম কেবলমাত্র সাধারণ ক্ষেত্রে সরাসরি বিনিময়যোগ্য। আপনার যদি ফাইলের নামের সাথে মিলে যাওয়া দরকার তবে আপনার এটি অন্যভাবে করা দরকার। find -regex
একটি বিকল্প। (লক্ষ্য করুন যে find -name
, উপায় দ্বারা, যা গ্লোব সিনট্যাক্স ব্যবহার করে))
'%'
অর্থ '*'
।
মূল শিরোনামে প্রকাশিত প্রশ্নের উত্তর:
নিয়মিত এক্সপ্রেশন ফাইল ফিল্টার করতে ব্যবহৃত থেকে আলাদা হয় কেন ?
ফাইল নাম সম্প্রসারণ নিয়মিত প্রকাশের পূর্বাভাস দেয়, ইতিমধ্যে বেশিরভাগ অপারেটিং সিস্টেম (ওয়াইল্ডকার্ড / জোকার অক্ষর) এর সাথে বিদ্যমান এবং এটি পরবর্তীকালের চেয়ে অনেক সহজ এবং স্বজ্ঞাত।
যদিও *.txt
সহজে নৈমিত্তিক ব্যবহারকারীদের দ্বারা বোধগম্য, অনুরূপ .*\.txt
অন্য কিছু আছে, অভিজ্ঞ ব্যবহারকারীদের / প্রোগ্রামারদের লক্ষ্য উল্লেখ না ^.*\.txt$
...
*.txt
সমান হয় না .*\.txt
, এটি (বেশিরভাগ) সমান হয় .*\.txt$
কারণ এর পরে কিছুই থাকতে পারে না .txt
(কমপক্ষে যুক্তিসঙ্গত ফাইলের নাম গ্লোববিং ধরে নেওয়া)। সম্ভবত ^.*\.txt$
কিছুটা ব্যবহারের উপর নির্ভর করে। আপনার বক্তব্য প্রমাণ করে?