एक तिथि प्रारूप से दूसरे प्रारूप में कैसे परिवर्तित करें?


11

मुझे अपनी तिथि प्रारूप के साथ एक समस्या है। मैं एक प्रारूप से दूसरे में बदलाव करना चाहता हूं और इसके विपरीत। मेरे दिनांक प्रारूप हैं

प्रारूप 1

YYYY-MM-DD

प्रारूप 2

MM/DD/YYYY

मैं प्रारूप 1 को प्रारूप 2 और प्रारूप 2 को प्रारूप 1 में बदलना चाहता हूं।


ओ अधिक स्पष्ट हो, मेरे पास फ़ाइल फ़ाइल नाम है: दिनांक 2000-01-01 2000-01-02 2000-01-03 2000-01-04 .. आवश्यक आउटपुट 01 / 01.2000 01/02/2000 01/03 / है 2000 01/02/2000 और इसके विपरीत
एआईबी

फ़ॉरवर्ड-स्लैश केवल दो वर्णों में से एक है जो * निक्स फ़ाइलनाम में नहीं हो सकता ...
evilsoup

जवाबों:


14

इसके लिए जीएनयू 'तारीख' का उपयोग करें। यह आपके लिए अन्य प्रारूपों के बीच भी परिवर्तित होगा ( date --helpप्रारूपों की सूची देखें )।

$ date -d 2013-07-05 +%m/%d/%Y
07/05/2013
$ date -d 07/05/2013 +%F
2013-07-05

अधिक स्पष्ट होने के लिए, मेरे पास फ़ाइल फ़ाइल नाम है: दिनांक 2000-01-01 2000-01-02 2000-01-03 2000-01-04 .. आवश्यक उत्पादन 01 / 01.2000 01/02/2000 01/03 / है 2000 01/02/2000 और इसके विपरीत
एआईबी

1
@Abraham यह उस आवश्यकता को कैसे पूरा नहीं करता है?
जोर्डनम

6

मान लें कि आपके पास पाठ रूप में दिनांक हैं जिन्हें परिवर्तित करने की आवश्यकता है

echo '2013-12-13' | awk -v FS=- -v OFS=/ '{print $2,$3,$1}'

और इसके विपरीत

echo '12/13/2013' | awk -v FS=/ -v OFS=- '{print $3,$1,$2}'

अधिक स्पष्ट होने के लिए, मेरे पास फ़ाइल फ़ाइल नाम है: दिनांक 2000-01-01 2000-01-02 2000-01-03 2000-01-04 .. आवश्यक उत्पादन 01 / 01.2000 01/02/2000 01/03 / है 2000 01/02/2000 और इसके विपरीत
एआईबी

धन्यवाद 1_CR, मैं थोड़ा संशोधित होने के बाद अब काम कर रहा हूँ !! #! / बिन / बाश गूंज '$ 1- $ 2- $ 3' | awk -v एफएस = - -v ओएफएस = / data.file '{$ 2, $ 3, $ 1 प्रिंट}'
ऐब

@ अब्रम, आपको अपनी किस्मत को ड्रूबेन के dateदृष्टिकोण के साथ आज़माना चाहिए , जो निश्चित रूप से अधिक सुंदर है
इरूवर

3
$ echo YYYY-MM-DD | { IFS=- read y m d && echo "$m/$d/$y"; }
MM/DD/YYYY

यदि आपके पास उन तिथियों के साथ एक फ़ाइल है, तो प्रति पंक्ति एक:

awk -F- -vOFS=/ '{print $2,$3,$1}' < that-file

0

निम्नानुसार sed का उपयोग करना:

$ echo '2013-12-13' | sed -r 's/([[:digit:]]{2,4})-([[:digit:]]{1,2})-([[:digit:]]{1,2})/\2\/\3\/\1/g'
12/13/2013
$ echo '12/13/2013' | sed -r 's/([[:digit:]]{1,2})\/([[:digit:]]{1,2})\/([[:digit:]]{2,4})/\3-\1-\2/g'
2013-12-13

0

किसी फ़ाइल नाम में दिनांक स्वरूप को बदलने के तरीके के बारे में टिप्पणियों में स्पष्ट प्रश्न का उत्तर देते हुए, ड्रूबेन के gnu dateदृष्टिकोण के एक संस्करण का उपयोग करें । यह आदेश स्थानीय फ़ोल्डर में सभी फ़ाइलों को पाता है, और संशोधित फ़ाइल नाम को दूसरे तर्क के रूप में xargsप्रतिस्थापित करने के लिए केवल फ़ाइल नाम को पाइप करता है, जो नाम बदलकर करता है।datemv

कमांड का मूल्यांकन करने के लिए bashचर प्रतिस्थापन का अतिरिक्त, थोड़ा सर्किट उपयोग आवश्यक है ।bashdate

find ./ -printf '%f\n' | xargs -I '{}' sh -c 'mv $1  $(date -j -f %Y-%m-%d $1 +%m/%d%Y)' -- {} \;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.