व्हॉट्सएप-अलग-अलग फ़ाइल नामों की सूची में एक्सटेंशन को प्रतिस्थापित करना एक सामान्य आवश्यकता है, और इसके लिए अंतर्निहित विशेषताएं हैं। यदि आप x
सूची में प्रत्येक नाम के अंत में जोड़ना चाहते हैं :
FILES_OUT = $(FILES_IN:=x)
सामान्य रूप है $(VARIABLE:OLD_SUFFIX=NEW_SUFFIX)
। यह प्रत्येक शब्द के अंत में मान लेता है VARIABLE
और प्रतिस्थापित OLD_SUFFIX
करता है जो इस प्रत्यय के साथ समाप्त होता है NEW_SUFFIX
(गैर-मिलान शब्द अपरिवर्तित छोड़ दिए जाते हैं)। GNU कॉल इस सुविधा को (जो हर लागू में मौजूद है) प्रतिस्थापन संदर्भों को कहते हैं ।
तुम सिर्फ परिवर्तन करना चाहते हैं .doc
में .docx
और .xls
में .xlsx
इस सुविधा का उपयोग कर, आप एक मध्यवर्ती चर का उपयोग करने की आवश्यकता है।
FILES_OUT_1 = $(FILES_IN:.doc=.docx)
FILES_OUT = $(FILES_OUT_1:.xls=.xlsx)
आप थोड़ा अधिक सामान्य वाक्यविन्यास का भी उपयोग कर सकते हैं $(VARIABLE:OLD_PREFIX%OLD_SUFFIX=NEW_PREFIX%NEW_SUFFIX)
। यह सुविधा GNU मेक के लिए अद्वितीय नहीं है, लेकिन यह सादे प्रत्यय-बदलते प्रतिस्थापन के रूप में पोर्टेबल नहीं है।
एक GNU मेक फ़ीचर भी है जो आपको एक ही पंक्ति में कई विकल्प की श्रृंखला देता है: patsubst
फ़ंक्शन ।
FILES_OUT = $(patsubst %.xls,%.xlsx,$(patsubst %.doc,%.docx,$(FILES_IN)))
FILES_OUT := $(patsubst %,%x,$(FILES_IN))
अगर नियम को वास्तव में सामान्य बनाया जा सकता है।