Saat mengunggah ke situs ftp, tanggal pembuatan file asli sepertinya hilang, dan saya mendapatkan tanggal pengunggahan. Namun, data Exif dalam file sudah benar. Apakah ada alat untuk mengubah tanggal yang dibuat dari tanggal Exif secara batch?
Saat mengunggah ke situs ftp, tanggal pembuatan file asli sepertinya hilang, dan saya mendapatkan tanggal pengunggahan. Namun, data Exif dalam file sudah benar. Apakah ada alat untuk mengubah tanggal yang dibuat dari tanggal Exif secara batch?
Jawaban:
Alat penanganan EXIF exiv2
memiliki opsi bawaan untuk ini:
exiv2 -T rename image.jpg
menyetel waktu modifikasi file terakhir mtime
,, ke tanggal yang disimpan dalam metadata EXIF.
Anda meminta untuk menggunakan waktu pembuatan - tetapi itu tidak digunakan dalam sistem seperti Unix - dan ada alasan bagus untuk itu: /unix/27297/why-doesnt-nix-keep-track -of-file-waktu-penciptaan
Saya cukup yakin saat Anda menelepon, buat waktu sebenarnya mtime
- tidak ada masalah di sana.
Dari 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.
Lihat opsi -t
untuk melakukan yang sebaliknya.
-t
dilakukannya. Bahkan, tampaknya benar-benar melakukan superset dari apa yang -T
dilakukannya.
Jika Anda menginstal exiftool dari CPAN, Anda dapat menjalankan skrip berikut, dengan asumsi bahwa semua file Anda berada di direktori yang disebut "semua"
#!/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
exiftool
Dengan asumsi, seperti yang disebutkan oleh 'Volker Siegel', bahwa Anda mungkin berarti mtime, saya akan menggunakan fungsi sederhana exiftools builtin ..
seperti:
$ exiftool "-DateTimeOriginal>FileModifyDate" test.jpg
ini akan mengambil informasi "bidang exif" DateTimeOriginal "dan menggunakannya untuk menyetel info sistem tanggal / waktu yang dimodifikasi dari file" test.jpg ".
$ 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
Itu juga bisa dibuat menggunakan jhead
perintah:
$ jhead -ft file.jpg
-dsft
. -ft
melakukan yang sebaliknya.
ExifTool dapat membaca dan memanipulasi sebagian besar informasi EXIF, termasuk mengekstrak tag Tanggal / Waktu Asli atau Membuat Data EXIF. Anda dapat menggunakan informasi ini untuk mengubah nama file atau mengubah cap waktu mereka. Sebagai contoh:
find -name '*.jpg' | while read PIC; do
DATE=$(exiftool -p '$DateTimeOriginal' $PIC |
sed 's/[: ]//g')
touch -t $(echo $DATE | sed 's/\(..$\)/\.\1/') $PIC
done
Ini akan menemukan semua file JPG di direktori saat ini dan memperbarui cap waktu.
Jika Anda ingin juga memberi nama file-file tersebut berdasarkan tanggal tersebut (ini cenderung berguna) kemudian tambahkan juga mv -i $PIC $(dirname $PIC)/$DATE.jpg
sebelum done
baris.