JPEG EXIF ​​meta verilerinden oluşturulan tarihi değiştir


29

Bir ftp sitesine yüklerken, orijinal dosya oluşturma tarihi kaybolmuş gibi görünüyor ve bunun yerine yükleme tarihini alıyorum. Ancak, dosyadaki Exif verileri doğrudur. Parti oluşturulacak tarihi Exif tarihinden itibaren değiştirmek için bir araç var mı?


1
Lütfen en yararlı bulduğunuz cevabı kabul etmeyi düşünün. Bu şekilde, bu soruyu arayan diğer kişiler "yanıtlandı" olarak işaretlenmiş olarak görecektir. Aynı zamanda vaktini size yardım eden bir kişiyi ödüllendirmenin bir yolu.
Dmitry Grigoryev

Yanıtlar:


27

EXIF işleme aracının exiv2bunun için yerleşik bir seçeneği vardır:

exiv2 -T rename image.jpg

mtimeEXIF meta verilerinde depolanan tarihe, son dosya değişikliği zamanını ayarlar .

Yaratma zamanını kullanmak istediniz - ama bu Unix benzeri sistemlerde kullanılmıyor - ve bunun için iyi sebepler var: https://unix.stackexchange.com/questions/27297/why-doesnt-nix-keep-track -of-dosya yaratma zamanı

Aramaya başladığın zamanın aslında olduğundan eminim mtime- orada sorun yok.


Kimden man exiv2:

NAME
        exiv2 - Image metadata manipulation tool

 SYNOPSIS
        exiv2 [options] [action] file ...

 DESCRIPTION
        exiv2 is a program to read and write Exif, IPTC and XMP image metadata and image com‐
        ments. The following image formats are supported:

 [ ... ]

 mv | rename
       Rename files and/or set file timestamps according to the Exif create time‐
       stamp.  Uses  the  value  of  tag  Exif.Photo.DateTimeOriginal  or, if not
       present, Exif.Image.DateTime to determine the timestamp. The filename for‐
       mat can be set with -r fmt, timestamp options are -t and -T.

 [ ... ]

 -T     Only  set  the  file  timestamp according to the Exif create timestamp, do not
        rename the file (overrides -k). This option is only  used  with  the  'rename'
        action.  Note:  On Windows you may have to set the TZ environment variable for
        this option to work correctly.


Tersini -tyapmak için seçeneğe bakın .


EXIF zaman damgasını dosya zaman damgasından belirlemek için "karşıt" olarak yorumlayacağım, ama öyle değil -t. Aslında, aslında ne yaptığını bir süperset yapmak görünüyor -T.
Michael

7

Exiftool'ü CPAN'dan yüklerseniz, tüm dosyalarınızın "all" adındaki bir dizinde olduğunu varsayarak aşağıdaki betiği çalıştırabilirsiniz.

#!/bin/sh
for i in all/*; do
    SPEC=`exiftool -t -s -d "%Y-%m-%d %H:%M:%S" -CreateDate "$i"`
    read X DATE <<<${SPEC}
    echo "$i:$DATE"
    touch -d "$DATE" "$i"
done

Bu betiğin ne yaptığını açıklayabilir misin? Özellikle için argsexiftool
user5359531

5

'Volker Siegel'in belirttiği gibi, muhtemelen mtime demek istediğinizi varsayarsak, exiftools yerleşik fonksiyonunu basit bir şekilde kullanırım.

sevmek:

 $ exiftool "-DateTimeOriginal>FileModifyDate" test.jpg

bu "exif field" DateTimeOriginal "bilgisini alır ve" test.jpg "dosyasının değiştirilmiş tarih / saat bilgilerini dosya sistemlerini ayarlamak için kullanır.

Örnek:

$ ls -la test.jpg
-rw-r-----@ 1 user  18329968  2432451 14 Out 17:57 test.jpg

$ exiftool -DateTimeOriginal test.jpg
Date/Time Original              : 2015:10:09 13:29:58

$ exiftool "-DateTimeOriginal>FileModifyDate" test.jpg
    1 image files updated

$ ls -la test.jpg
-rw-r-----@ 1 user  18329968  2432451  9 Out 13:29 test.jpg

4

Ayrıca jheadkomut kullanılarak da yapılabilir :

$ jhead -ft file.jpg

Jhead 3.0 için seçenek budur -dsft. -fttersini yapar.
Tesquin Crydd

jhead gibi görünüyor sadece EXIF başlığıyla gübre değil aracı - ExifTool ve aslında Exiv2 artırmak bana tamamen kabul edilemez etrafında dosyası ve hareket başlıkları boyutunu.
Michael

3

ExifTool, Tarih / Saat Orijinali veya Veri Oluşturma EXIF ​​etiketlerinin çıkarılması dahil olmak üzere çoğu EXIF ​​bilgisini okuyabilir ve değiştirebilir. Bu bilgileri, dosyaları yeniden adlandırmak veya zaman damgalarını değiştirmek için kullanabilirsiniz. Örneğin:

find -name '*.jpg' | while read PIC; do
    DATE=$(exiftool -p '$DateTimeOriginal' $PIC |
    sed 's/[: ]//g')
    touch -t $(echo $DATE | sed 's/\(..$\)/\.\1/') $PIC
done

Bu, tüm JPG dosyalarını geçerli dizinde bulacak ve zaman damgalarını güncelleyecektir.

Ayrıca bu dosyalara o tarihe göre bir ad vermek istiyorsanız (bu kullanışlı olabilir) daha sonra satırdan mv -i $PIC $(dirname $PIC)/$DATE.jpgönce de ekleyin done.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.