我有大量的文件被命名爲A2012178.1220.051.2012178233531.hdf在那裏,從第2個字符到第8個是日期,年份和茱莉安日。從第13個字符到文件的擴展名是垃圾給我...所以我想重命名文件並轉換日期(爲了方便起見)。使用文件名中的信息重命名文件
到目前爲止,我可以將日期轉換在bash
但我不知道該怎樣來讀取文件名年和儒略日和bash的內更換名字的想法腳本....
任何想法?
我有大量的文件被命名爲A2012178.1220.051.2012178233531.hdf在那裏,從第2個字符到第8個是日期,年份和茱莉安日。從第13個字符到文件的擴展名是垃圾給我...所以我想重命名文件並轉換日期(爲了方便起見)。使用文件名中的信息重命名文件
到目前爲止,我可以將日期轉換在bash
但我不知道該怎樣來讀取文件名年和儒略日和bash的內更換名字的想法腳本....
任何想法?
使用參數替換來獲得子:
name="A2012178.1220.051.2012178233531.hdf"
Year=${name:1:4}
JulianDay=${name:5:3}
棘手的部分是儒略日具有可變長度,所以你不提前知道時間怎麼給它。所以,你可能做這樣的事情:
read begin date end < <(echo $filename | sed -e 's/\(.\)\([[:digit:]]\+\)\(.*\)\
/\1 \2 \3/')
Year=${date::4}
JulianDay=${date:4}
newdate=$(date -d "${Year}-01-01 +${JulianDay} days -1 day" "+%Y%m%d")
mv $filename "${begin}${newdate}${end}"
這基本上分裂了文件名拉出日期字段,然後抓住了第4位,與其餘的是儒略日的一年。
(假設茱莉安日不是0填充,這是不明確的,如果它是零填充的話,就容易多了)。
非常好...它工作得很好... – 2013-03-28 09:31:28