2013-03-27 195 views
1

我有大量的文件被命名爲A2012178.1220.051.2012178233531.hdf在那裏,從第2個字符到第8個是日期,年份和茱莉安日。從第13個字符到文件的擴展名是垃圾給我...所以我想重命名文件並轉換日期(爲了方便起見)。使用文件名中的信息重命名文件

到目前爲止,我可以將日期轉換在bash

​​

但我不知道該怎樣來讀取文件名年和儒略日和bash的內更換名字的想法腳本....

任何想法?

回答

2

使用參數替換來獲得子:

name="A2012178.1220.051.2012178233531.hdf" 

Year=${name:1:4} 
JulianDay=${name:5:3} 
+0

非常好...它工作得很好... – 2013-03-28 09:31:28

0

棘手的部分是儒略日具有可變長度,所以你不提前知道時間怎麼給它。所以,你可能做這樣的事情:

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填充,這是不明確的,如果它是零填充的話,就容易多了)。