मैं फ़ाइल नाम के आगे दिनांक जोड़ना चाहता हूं ("somefile.txt")। उदाहरण के लिए: somefile_25-11-2009.txt या somefile_25Nov2009.txt या उस प्रभाव के लिए कुछ भी
हो सकता है कि कोई स्क्रिप्ट टर्मिनल विंडो में कुछ कमांड करेगी या करेगी। मैं लिनक्स (उबंटू) का उपयोग कर रहा हूं।
अग्रिम में धन्यवाद।
ओह, मैं लगभग उस स्क्रिप्ट को जोड़ना भूल गया याकमांड फ़ाइल नाम को एक नई तिथि तक अद्यतन करना चाहिए, जिसमें आप फ़ाइल को किसी विशिष्ट फ़ोल्डर में सहेजना चाहते हैं, लेकिन फिर भी पिछली फ़ाइलों को रखते हुए। तो इस तरह की फाइलें अंततः फ़ोल्डर में होंगी: filename_18Oct2009.txt, filename_9Nov2009.txt, filename_23Nov2009.txt
उत्तर:
जवाब के लिए 32 № 1यहाँ दो समस्याएं हैं।
1. तारीख को एक स्ट्रिंग के रूप में प्राप्त करें
यह बहुत आसान है। बस का उपयोग करें date
के साथ आदेश +
विकल्प। हम किसी वैरिएबल में वैल्यू को कैप्चर करने के लिए बैकटिक्स का उपयोग कर सकते हैं।
$ DATE=`date +%d-%m-%y`
आप भिन्न का उपयोग करके दिनांक स्वरूप बदल सकते हैं %
के रूप में विस्तृत विकल्प दिनांक मैन पेज.
2. फ़ाइल को नाम और एक्सटेंशन में विभाजित करें।
यह थोड़ा पेचीदा मामला है। अगर हमें लगता है कि वे केवल एक ही होंगे .
फ़ाइल नाम में हम उपयोग कर सकते हैं cut
साथ में .
परिसीमनकर्ता के रूप में।
$ NAME=`echo $FILE | cut -d. -f1
$ EXT=`echo $FILE | cut -d. -f2`
हालांकि, यह "टी काम कई के साथ जीता .
फ़ाइल नाम में। अगर हम "का उपयोग कर रहे हैं bash
- जो आप शायद हैं - हम कुछ का उपयोग कर सकते हैं मैश मैश जो हमें वैरिएबल एक्सपेंशन करते समय पैटर्न से मेल खाने की अनुमति देता है:
$ NAME=${FILE%.*}
$ EXT=${FILE#*.}
उन्हें एक साथ लाना हमें मिलता है:
$ FILE=somefile.txt
$ NAME=${FILE%.*}
$ EXT=${FILE#*.}
$ DATE=`date +%d-%m-%y`
$ NEWFILE=${NAME}_${DATE}.${EXT}
$ echo $NEWFILE
somefile_25-11-09.txt
और अगर हम "पठनीयता के बारे में कम चिंतित हैं तो हम सभी काम एक लाइन पर (एक अलग तारीख प्रारूप के साथ) करते हैं:"
$ FILE=somefile.txt
$ FILE=${FILE%.*}_`date +%d%b%y`.${FILE#*.}
$ echo $FILE
somefile_25Nov09.txt
जवाब के लिए 23 № 2
आप बैकटिक्स का उपयोग कर सकते हैं।
$ echo "myfilename-"`date +"%d-%m-%Y"`
पैदावार:
myfilename-25-11-2009
जवाब के लिए 10 № 3
cp somefile somefile_`date +%d%b%Y`
जवाब के लिए 0 № 4
थोड़ा और अधिक दृढ़ समाधान जो पूरी तरह से आपकी कल्पना से मेल खाता है
echo `expr $FILENAME : "(.*).[^.]*"`_`date +%d-%m-%y`.`expr $FILENAME : ".*.([^.]*)"`
जहां पहले "expr" एक्सटेंशन के बिना फाइल का नाम निकलता है, वहीं दूसरा "expr" एक्स्टेंशन एक्सटेंशन