কীভাবে এক তারিখের ফর্ম্যাট থেকে অন্য ফর্ম্যাটে রূপান্তর করবেন?


11

আমার তারিখের ফর্ম্যাটটিতে আমার একটি সমস্যা আছে। আমি একটি ফর্ম্যাট থেকে অন্যটিতে এবং তার বিপরীতে পরিবর্তন করতে চাই। আমার তারিখের ফর্ম্যাটগুলি

ফরম্যাট ঘ

YYYY-MM-DD

ফর্ম্যাট 2

MM/DD/YYYY

আমি ফর্ম্যাট 1 পরিবর্তন 2 এবং ফর্ম্যাট 2 পরিবর্তন করতে চান।


o আরও পরিষ্কার হয়ে নিন, আমার ফাইল ফাইলের নাম আছে: তারিখ 2000-01-01 2000-01-02 2000-01-03 2000-01-04 .. প্রয়োজনীয় আউটপুট 01 / 01.2000 01/02/2000 01/03 / 2000 01/02/2000 এবং বিপরীত
আইআইবি

ফরোয়ার্ড-স্ল্যাশগুলি কেবলমাত্র দুটি অক্ষরের মধ্যে একটি যা * নিক্স ফাইলের নাম হতে পারে না ...
অশুভরূপ

উত্তর:


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
@ আব্রাহাম কীভাবে এই চাহিদা পূরণ করে না?
জর্ডানম

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_ সিআর ধন্যবাদ, আমি একটু সংশোধন করার পরে এটি এখন কাজ করছে! #! / বিন / বাশ প্রতিধ্বনি '$ 1- $ 2- $ 3' | awk -v ফাঃ = - -v OFS = / data.file '{$ 2, $ 3, $ 1 প্রিন্ট}'
AiB

@ আব্রাহাম, আপনার নিজের ভাগ্যটি ড্রয়বেনের 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

নীচে সেড ব্যবহার:

$ 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, বদলে dateদ্বিতীয় আর্গুমেন্ট হিসাবে রুপান্তরিত ফাইলের নাম থেকে mvযা সঞ্চালিত নামান্তর।

কমান্ডটি মূল্যায়ন করার সাথে সাথে bashভেরিয়েবল বিকল্পের অতিরিক্ত, সামান্য সার্কিটাস ব্যবহার প্রয়োজন necessarybashdate

find ./ -printf '%f\n' | xargs -I '{}' sh -c 'mv $1  $(date -j -f %Y-%m-%d $1 +%m/%d%Y)' -- {} \;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.