برای فیلتر کردن نام فایلها باید در ابتدا با الگوهای wildcard آشنا باشیم.
این الگوها از کاراکترهای خاصی ساخته شدهاند که در لینوکس معانی مختلفی دارند . پرکاربرد ترین این الگوها عبارتند از :
$ ls -l *.conf
مثال بالا لیست تمام فایلهایی که در انتها به .conf ختم میشوند و در دایرکتوری فعلی شما قرار دارند را برمیگرداند.
$ ls -l *.???
مثال بالا لیست تمام فایلهایی که در انتها یک نقطه و سپس سه کاراکتر دارند را برمیگرداند.
$ ls -l file[2-4]
$ ls -l file.[a-z]?
مثال اول فایلهایی با نام file4 ، file3 ، file2 و مثال دوم فایلهایی مانند file.a1 یا file.ab را شامل و درصورت وجود برمیگرداند.
$ ls -l {[a-f]*,*.conf,*.???}
همانطور که در مثال بالا مشخص است پترنهای مختلف را با ( , ) جدا میکنیم ، باید توجه داشته باشیم نتیجه این دستور اشتراک پترنها میباشد. یعنی همه فایلهایی که با a تا f شروع میشوند به همراه همه فایلهایی که پسوند conf دارند به همراه همه فایلهایی که پسوند سه حرفی دارند را نمایش میدهد.
ما در این آموزش فقط از دستور ls که برای لیست کردن فایلها است استفاده کردیم ، شما میتوانید از ترکیب دستورات مختلف و پترنها استفاده کنید . برای مثال دستور زیر تمام فایلها با پسوند txt را از دایرکتوری Downloads به Documents مناقل میکند.
mv *.txt ~/Downloads/ ~/Documents/
تفاوت Glob و Regex
اگر با ( Regular Expression ) آشنا باشید حتما متوجه شباهت Glob و Regex شدهاید.
الگوهای Regex و Glob روشهای مشابهی برای تطبیق الگوها در رشتهها هستند. تنها تفاوت در این است که الگوی Regex با رشتهها در کد ، متن و ... مطابقت پیدا میکند، در حالی که Globbing با نام فایل یا محتوای فایل در ترمینال مطابقت دارد.