2014-05-09 25 views
1

有在shell腳本中使用兩個日期格式:如何更改日期格式的shell腳本

Format 1. 01-01-2014 
Format 2. 2014-01-01 

場景:
格式1是一個目錄,而格式2是文件名。
我想解析格式2文件使用shell腳本,但堅持在一點。
我管理呼叫通過定義的所有值在陣列中,現在爲每個陣列值我在格式2
解析所需的文件查閱管理格式2
問題可以如果要解決的陣列,其具有格式1目錄,我可以像PHP一樣進行日期轉換。

$date='01-01-2014' 
$filetosearch=date('Y-m-d',strtotime($date)) 

通過上面的兩個步驟我可以得到兩個不同的日期格式從我在數組中定義的一個。 所以這樣的事情發生在殼或不。

+0

是美國(月 - 日 - 年)格式1或歐洲(日 - 月年)風格? – John1024

回答

2

一個解決方案,使用awk

date='31-01-2014' 
filetosearch=$(echo "$date" | awk -F- '{print $3"-"$2"-"$1}') 

,並使用sed:以上

filetosearch=$(echo "$date" | sed 's/\(..\)-\(..\)-\(....\)/\3-\2-\1/') 

假定date是在歐洲(日 - 月 - 年)的格式。如果您的日期是美國格式,則需要只是一個微小的變化:

date='01-31-2014' 
filetosearch=$(echo "$date" | awk -F- '{print $3"-"$1"-"$2}') 

和:

filetosearch=$(echo "$date" | sed 's/\(..\)-\(..\)-\(....\)/\3-\1-\2/')