Saya sering mengimpor foto dan video (kebanyakan memiliki ekstensi JPG dan MOV) dari kamera digital dan tablet ke PC saya, dan saya ingin melihatnya diurutkan berdasarkan tanggal dan waktu pengambilannya sudah ada dalam data EXIF mereka. Dan karenanya saya ingin mengubah nama mereka semua lebih disukai menggunakan Script Nautilus sederhana dengan lebih disukai memasukkan tanggal dan waktu prangko sebelum setiap nama file.
Sejauh ini saya hanya berhasil menyatukan Script Nautilus berikut, yang saya percaya masih jauh dari sempurna:
for i in *.*
do
mv -i "$i" "$(exiftool -CreateDate "$i" | awk -F ': ' '{print $2}')_"$i""
done
Apa yang saya tidak suka dalam metode penggantian nama ini adalah titik dua yang digunakan dalam stempel tanggal dan waktu EXIF (mis. "2013: 09: 03 20: 55: 09_IMG_0108.JPG") yang mungkin menimbulkan masalah saat mentransfer file ini nanti ke lingkungan lain ( misalnya Windows).
Perintah ini (menggunakan exiv2 bukannya exiftool ) dengan mudah memungkinkan manipulasi prangko tanggal dan waktu tetapi kekurangannya adalah ia tidak bekerja pada file video (misalnya MOV) :
exiv2 -k -r '%Y-%m-%d_%H-%M-%S_:basename:' rename "$i"
Jadi saya berharap seseorang dapat menemukan solusi yang lebih baik. Dan itu akan ajaib jika bahkan berhasil mengubah nama file dan ekstensi asli menjadi huruf kecil juga!
Jawaban:
Anda dapat menjalankan skema penamaan melalui
sed
, untuk mengganti titik dua dengan tanda hubung dan spasi dengan garis bawah, seperti:Sedangkan untuk membuat semuanya menjadi huruf kecil, Anda bisa menggunakan
rename
:Atau Anda bisa melakukannya dalam skrip Anda menggunakan
sed
, seperti pada:... dan kemudian gunakan
$j
variabel sebagai pengganti akhir baris$i
Andamv
. Cara sed ini sedikit lebih portabel (jika itu penting bagi Anda) karena distro linux yang berbeda memiliki perintah ganti nama yang berbeda, sementara sed bersifat universal.Atau, sebagai alternatif, skrip dapat dimodifikasi sebagai berikut untuk melakukan konversi nama file menjadi huruf kecil pada awalnya menggunakan
tr
:Untuk melakukan perintah yang sedikit berbeda untuk jenis file yang berbeda, pernyataan kasus bash dapat digunakan dalam skrip ini. Sebagai contoh:
Dalam contoh ini, penggantian nama file MOV yang memiliki cap waktu CreateDate SETIAP JUMLAH jam SETELAH ATAU SEBELUM file JPG disesuaikan dengan menggunakan data EXIF (-tur) lainnya dan menghapus bahwa akhiran perbedaan waktu itu, dan mungkin perlu mengubah bagian -tur sesuai dengan lokasi yang diatur dalam sistem.
sumber
$i
untuk$j
tidak melakukan apa-apa). Sebagai gantinya, saya memasukkan konversi nama file ke huruf kecil di awal dan mengambil kebebasan untuk menambahkan ini sebagai opsi lain (yang paling tidak bekerja untuk saya) di akhir jawaban Anda sehingga saya dapat menerima jawaban Anda. Tentu saja Anda dapat mengedit jawaban Anda lebih lanjut sesuai keinginan.Saya perlu mengganti nama foto saya dan menemukan pertanyaan ini di sini - Saya baru tahu yang
exiftool
menanganinya secara asli:Dari http://www.sno.phy.queensu.ca/~phil/exiftool/filename.html
Jika Anda ingin melacak nama file asli dan menulis huruf kecil ekstensi:
Hal yang sama juga berlaku dengan seluruh nama file dalam huruf kecil:
sumber
Saya tahu Anda mengatakan bahwa Anda lebih suka skrip, namun, jika Anda terbuka untuk aplikasi Java gratis, Anda dapat menggunakan AmoK Exif Sorter
sumber
Saya akan gunakan
krename
untuk ini. Itusumber
Pyrenamer tidak akan berfungsi pada Ubuntu 16.04 saya yang baru diinstal, oleh karena itu saya harus mencari cara lain untuk menyelesaikan masalah ini juga.
Saya memiliki file seperti IMG_0001.JPG, IMG_0002.JPG, ... dalam satu folder. Periksa situs ini, /programming/917260/can-var-parameter-expansion-expressions-be-nested-in-bash
Instal "exiv2" terlebih dahulu, dan saya menulis baris perintah berikut:
untuk img dalam $ (ls *. [Jj] [Pp] [Gg] 2> / dev / null); lakukan exiv2 -r '% Y% m% d_% H% M% S _' "$ (tmp = $ {img %%. *}; echo $ {tmp ## * _})" ganti nama "$ img"; selesai
Nama file keluaran adalah YYYYMMDD_HHMMSS_0001.JPG, YYYYMMDD_HHMMSS_0002.JPG, ... dll. Bahkan foto diambil pada detik yang sama, nomor seri foto asli akan membuat perbedaan.
sumber