/ / लिनेक्स में फ़ाइल नाम के लिए परिशिष्ट तिथि - linux, ubuntu, append, rename, filenames

लिनक्स में फ़ाइल नाम बदलने की तारीख - लिनक्स, उबंटू, संलग्न, नाम बदलें, फ़ाइल नाम

मैं फ़ाइल नाम के आगे दिनांक जोड़ना चाहता हूं ("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" एक्स्टेंशन एक्सटेंशन