2012-02-09 110 views
1

我有一堆文件,其中包含帶時間戳記的ASCII標頭WITHIN該文件後面跟着一大塊二進制數據。我想列出按這個時間戳排列的文件,在命令行(bash等)。基於文件中的時間戳對文件進行排序

文件頭類似於以下內容:

encoding: raw 
endian: big 
dimension: 4 
sizes: 128 128 1 4 
spacings: 1.0 1.0 1.0 NaN 
position: -3164,-13678 
date_time: 06.02.12.18:59 
user_name: Operator1 
sample_name: 
dwell_time: 4.000 
count_time: 65.536 
duration: 202.000 
raster: 79912 
pixel_width: 624.3125 
pixel_height: 624.3125 

....binary data.... 

我想基於「DATE_TIME」時間戳,它使用格式dd.mm.yy.hh排序:毫米

sort --key選項看起來很有希望,但我所有的嘗試都失敗了。任何幫助深表感謝。謝謝。

+0

這是一個編程問題?如果是這樣,你使用哪種語言進行編程? – Paul 2012-02-09 20:46:05

+0

@Paul - 使用命令行。 – 2012-02-09 20:54:19

+0

此問題屬於[超級用戶](http://superuser.com/)SE站點。 – Paul 2012-02-09 20:58:44

回答

0

假設這些文件的圖像,因此您可以使用一個工具,如exiftool基於其創建日期來重命名它們,然後按名稱排序。

如果你不能將其重命名,只轉儲與創建日期STDOUT和sort的名字是,如:

exiftool -p '$dateTimeOriginal $filename' -q -f DIRECTORY/WHERE/IMAGES/ARE | sort -n 

如果你只是想在輸出文件名,追加一個| cut -f 2 -d " "到結束。

如果它未通過exiftool識別的文件格式,這可能會或可能無法正常工作:

for f in YOURFILES* ; do 
    filedate=`grep --binary-file=text -i -o 'date_time: ...........:..' $f | head -1` 
    echo "$filedate $f" 
done | sort -n 

注意:當有文件名中的空間,這將無法正常工作(和我要走了那要給你解決)。如果您只想輸出已排序的文件名,請在sort -n之後附加| awk '{print $NF}'

+0

謝謝,但重命名的文件是不是一種選擇:( – 2012-02-09 20:51:01

+0

OK,編輯我的答案。 – 2012-02-09 20:59:10

+0

你的答案適用於大多數的圖像文件格式,但這個特殊的文件格式是私有的,因此'exiftool'不會爲我工作。但是這個概念相同,所以我可以使用這種方法來達到預期的效果。謝謝。 – 2012-02-09 22:48:45

相關問題