基于文件中的时间戳对文件进行排序
我有一堆文件,其中包含带时间戳记的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
选项看起来很有希望,但我所有的尝试都失败了。任何帮助深表感谢。谢谢。
假设这些文件的图像,因此您可以使用一个工具,如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}'
。
谢谢,但重命名的文件是不是一种选择:( – 2012-02-09 20:51:01
OK,编辑我的答案。 – 2012-02-09 20:59:10
你的答案适用于大多数的图像文件格式,但这个特殊的文件格式是私有的,因此'exiftool'不会为我工作。但是这个概念相同,所以我可以使用这种方法来达到预期的效果。谢谢。 – 2012-02-09 22:48:45
这是一个编程问题?如果是这样,你使用哪种语言进行编程? – Paul 2012-02-09 20:46:05
@Paul - 使用命令行。 – 2012-02-09 20:54:19
此问题属于[超级用户](http://superuser.com/)SE站点。 – Paul 2012-02-09 20:58:44