> For the complete documentation index, see [llms.txt](https://sh.howtocode.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sh.howtocode.dev/1.0.0.part1intro/1.2.0.manipulation/1.2.1.wildcard.md).

# ওয়াইল্ডকার্ড

এই চ্যাপ্টারের শুরুতে আমরা একটা উদাহরণ দিয়েছি:

```
cp -u *.html destination_directory/
```

আসুন এটার ব্যাখ্যা করা যাক:

* **cp -u**: আমরা কপি করার কমান্ড **cp** কে **-u** অপশনসুদ্ধ ব্যবহার করেছি। এই অপশনটি ব্যবহার করলে শুধু সেই ফাইলগুলো কপি হবে যেগুলো ডেসটিনেশন ডিরেক্টরিতে(অর্থাৎ যেখানে কপি করবো) নেই কিন্তু সোর্স ডিরেক্টরিতে(অর্থাৎ যেখান থেকে কপি করবো) আছে বা যে ফাইলগুলোর লেটেস্ট ভার্শন সোর্স ডিরেক্টরিতে আছে আর ডেস্টিনেশন ডিরেক্টরিতে আছে পুরনো ভার্শন।
* **\*.html**: আমরা **\*.html** দিয়ে সকল html ফাইলগুলো সিলেক্ট করেছি। অর্থাৎ শুধুমাত্র html ফাইলগুলোই কপি করবে। '\*' চিহ্নের এই ব্যবহারকে ওয়াইল্ডকার্ড বলে। এই লেসনে আমরা ওয়াইল্ডকার্ডের ব্যবহার নিয়েই কথা বলবো।
* **destination\_directory/**: যে ডিরেক্টরিতে ফাইলগুলো কপি করা হবে।

আমরা দেখলাম ওয়াইল্ডকার্ড আমাদের একটা একটা করে ফাইলের নাম লেখার যন্ত্রণা থেকে বাঁচিয়েছে। এটি শেলের একটি ফিচার। বেশ কয়েকটি ওয়াইল্ডকার্ড আছে আমাদের পরিশ্রম কমানোর জন্য।

| ওয়াইল্ডকার্ড   | অর্থ                                                   |
| -------------- | ------------------------------------------------------ |
| \*             | যেকোনো ক্যারেক্টার সিলেক্ট করবে।                       |
| ?              | যেকোনো একটি ক্যারেক্টার সিলেক্ট করবে।                  |
| \[charecters]  | সেটের অন্তর্গত যেকোনো ক্যারেক্টার সিলেক্ট করবে।        |
| \[!charecters] | সেটের অন্তর্গত নয় এমন যেকোনো ক্যারেক্টার সিলেক্ট করবে। |
| \[\[:class:]]  | বিশেষ ক্লাসের অন্তর্গত ক্যারেক্টার সিলেক্ট করবে।       |

কিছু ক্যারেক্টার ক্লাস আছে যেগুলো ব্যবহার করে একই শ্রেণীর ক্যারেক্টারগুলো সহজে সিলেক্ট করা যায়:

| ক্যারেক্টার ক্লাস | অর্থ                       |
| ----------------- | -------------------------- |
| \[:alnum:]        | সকল অক্ষর ও সংখ্যা।        |
| \[:alpha:]        | সকল অক্ষর।                 |
| \[:digit:]        | সকল সংখ্যা।                |
| \[:lower:]        | সকল ছোটহাতের ইংরাজি অক্ষর। |
| \[:upper:]        | সকল বড়হাতের ইংরাজি অক্ষর।  |

আসুন ওয়াইল্ডকার্ড ব্যবহার করে তৈরি কিছু প্যাটার্ন দেখি এবং দেখি সেগুলো কি করবে:

| প্যাটার্ন                 | অর্থ                                                                                               |
| ------------------------- | -------------------------------------------------------------------------------------------------- |
| \*                        | সব ফাইল সিলেক্ট করবে।                                                                              |
| g\*                       | 'g' দিয়ে শুরু হওয়া সব ফাইল সিলেক্ট করবে।                                                           |
| b\*.txt                   | 'b' দিয়ে শুরু হওয়া এবং '.txt' দিয়ে শেষ হওয়া সকল ফাইল সিলেক্ট করবে।                                 |
| Data???                   | 'Data' দিয়ে শুরু হওয়া ফাইল যেগুলোর পরে তিনটি ক্যারেক্টার থাকবে শুধু সেগুলো সিলেক্ট করবে।           |
| \[abc]\*                  | 'a', 'b' অথবা 'c' দিয়ে শুরু হওয়া সকল ফাইল সিলেক্ট করবে।                                            |
| BACKUP.\[0-9]\[0-9]\[0-9] | 'BACKUP.' দিয়ে শুরু করা যেকোনো ফাইল যার পিছনে ঠিক তিনটি সংখ্যা আছে শুধুমাত্র সেগুল‌ো সিলেক্ট করবে। |
| \[\[:upper:]]\*           | সকল ফাইল যেগুলোর নামের শুরুতে বড়হাতের অক্ষর আছে।                                                   |
| \[!\[:digit:]]\*          | সকল ফাইল যা কোনো সংখ্যা দিয়ে শুরু হয়নি।                                                            |
| \*\[\[:lower:]123]        | সকল ফাইল যার শেষে হয় ছোটহাতের অক্ষর বা '1', '2' বা '3' সংখ্যাগুলো আছে।                             |
