根据文件中的时间戳对文件进行排序

时间:2012-02-09 20:31:56

标签: linux sorting

我有一堆文件,其中包含带有时间戳 WITHIN 文件的ascii标头,然后是大量二进制数据。我想在命令行(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:mm

sort --key选项看起来很有希望,但我的所有尝试都失败了。任何帮助深表感谢。感谢。

1 个答案:

答案 0 :(得分: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

注意:当文件名中有空格时,这将不起作用(我将把它留给您解决)。如果您只想输出已排序的文件名,请在| awk '{print $NF}'之后附加sort -n