मैं (आधार नाम मैं पथ के बिना मतलब द्वारा एक फ़ाइल के आधार नाम के अंतिम 3 अक्षरों के लिए एक श लिपि में एक चर सेट करने के लिए कोशिश कर रहा हूँ और प्रत्यय के बिना)। मैं ऐसा करने में सफल रहा हूं, लेकिन विशुद्ध रूप से जिज्ञासा से बाहर, मैं सोच रहा हूं कि क्या कोई छोटी, एक कमांड है जिसका मैं उपयोग कर सकता हूं। मूल रूप से मेरे पास एक-लाइनर awk
था, लेकिन यह लंबे समय तक था। वर्तमान में मेरे पास यह दो-लाइन स्क्रिप्ट है (एक पूर्ण फ़ाइल नाम है $1
)
filebase=`basename "$1"`
lastpart=`echo -n ${filebase%.*} | tail -c3`
तो उदाहरण के लिए, "/path/to/somefile.txt" में "ile" के साथ समाप्त होता है $lastpart
।
क्या मैं किसी भी तरह से basename
और बिट को प्रत्यय को एक ही कमांड में जोड़ सकता हूं , और क्या इसे tail
पाइप का उपयोग किए बिना (या किसी और चीज का उपयोग करने के लिए) भेजने का कोई तरीका है ? प्रत्यय अज्ञात है इसलिए मैं इसे एक पैरामीटर के रूप में आधार नहीं बना सकता basename
।
मुख्य लक्ष्य वास्तव में जितना संभव हो उतना छोटा नहीं है, जितना संभव हो एक नज़र में उतना ही पठनीय होना चाहिए। इस सबका वास्तविक संदर्भ सुपरसुसर पर यह प्रश्न है , जहां मैं एक उचित सरल उत्तर के साथ आने की कोशिश कर रहा हूं।
two
काम करेगा; .three
मुझे लगता है कि विस्तार होगा ।
file.one.two.three
? आप चाहेंगेile
याtwo
?