Сортировка файлов по временной метке в файле - PullRequest
1 голос
/ 10 февраля 2012

У меня есть куча файлов, которые содержат заголовок 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", которая использует формат дд.мм.гг.чч: мм

Опция sort --key выглядит многообещающе, но все мои попытки провалились. Буду признателен за любую оказанную помощь. Спасибо.

1 Ответ

0 голосов
/ 10 февраля 2012

Предполагая, что эти файлы являются изображениями, вы можете использовать такой инструмент, как exiftool, чтобы переименовать их по дате их создания, а затем отсортировать по имени.

Если вы не можете переименовать их, просто скопируйте имена с датой создания в STDOUT и sort, например ,::1007*

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...