"Glob"ها الگوهای سادهای هستند که میتوانند برای مطابقت نام فایلها و رشتهها به کار بروند. به طور معمول آنها خیلی قدرتمند نمیباشند. اگر قدرت بیشتری لازم دارید، چند گزینه در دسترس است.
اگر میخواهید بر تمام فایلهای که با جانشین A یا جانشین B مطابقت دارند عمل کنید، فقط هر دو را در یک سطر قرار بدهید:
rm -- *.bak *.old
اگر میخواهید یک OR منطقی فقط در قسمتی از جانشین به کار ببرید(بزرگتر از یک کاراکتر منفرد -- برای مورد یک کاراکتری، کلاسهای کاراکتر داخل کروشه کفایت میکند)، در Bash، میتوانید از بسط ابرو استفاده کنید:
rm -- *.{bak,old}
اگر موردی بازهم بیشتر عمومی و قدرتمند نیاز دارید، در KornShell یا BASH میتوانید از جانشینهای توسعهیافته استفاده کنید. در Bash، لازم است گزینه extglob تنظیم باشد. به این ترتیب میتوند کنترل شود:
shopt extglob
و به این ترتیب تنظیم میشود:
shopt -s extglob
برای دستگرمی، تمام فایلهایی که با foo شروع میشوند و به .d ختم نمیشوند را به دایرکتوری foo_thursday.d منتقل میکنیم:
mv foo!(*.d) foo_thursday.d
یک مثال پیچیدهتر -- حذف تمام فایلهایی که نام آنها شامل Pink_Floyd و هچنین فاقد The_Final_Cut باشد:
rm !(!(*Pink_Floyd*)|*The_Final_Cut*)
ضمناً: این نوع از الگوها میتوانند با KornShell نیز به کار بروند. در آنجا نیازی به فعال کردن نیست، بلکه الگوهای پیشفرض هستند.
پرسش و پاسخ 16 (آخرین ویرایش 2009-12-30 17:14:33 توسط MatthiasPopp)