Inilah jawaban untuk pertanyaan bonus.
Saya sebenarnya ingin memasukkan tanggal pembuatan foto ke dalam nama filenya, untuk mendapatkan sesuatu seperti 20091231 2359 NewYear.jpg. Saya khawatir saya memerlukan kombinasi perintah yang tidak sepele untuk mencapainya?
Dengan asumsi Anda ingin mengambil tanggal pembuatan foto dari data EXIF, Anda memerlukan alat terpisah untuk itu. Untung ternyata jhead
menawarkan cara sederhana untuk melakukan apa yang Anda inginkan, dengan -n
pilihan.
$ jhead -h
[...]
-n[format-string]
Rename files according to date. Uses exif date if present, file
date otherwise. If the optional format-string is not supplied,
the format is mmdd-hhmmss. If a format-string is given, it is
is passed to the 'strftime' function for formatting
In addition to strftime format codes:
'%f' as part of the string will include the original file name
[...]
Berikut contohnya:
$ jhead -n%Y-%m-%d-%f New_year.jpg
New_year.jpg --> 2009-12-31-New_year.jpg
Edit :Tentu saja, untuk melakukan ini pada banyak foto, itu akan menjadi seperti:
$ for i in *jpg; do jhead -n%Y-%m-%d-%f $i; done
Untuk mengubah pemformatan tanggal sesuai keinginan Anda, lihat output dari date --help
, Misalnya; itu akan mencantumkan kode format yang tersedia.
(jhead tersedia secara luas untuk sistem yang berbeda. Jika Anda menggunakan Ubuntu atau Debian, cukup ketik sudo apt-get install jhead
untuk menginstalnya.)
Untuk bagian penggantian nama saja, program 'ganti nama' akan berfungsi. Itu sama dengan contoh yang Anda lihat di halaman manual, hanya beralih.
[email protected]:/tmp/q$ touch myfile.{a,b,c,d}
[email protected]:/tmp/q$ ls
myfile.a myfile.b myfile.c myfile.d
[email protected]:/tmp/q$ rename -v s/myfile/yourfile/ myfile.*
myfile.a renamed as yourfile.a
myfile.b renamed as yourfile.b
myfile.c renamed as yourfile.c
myfile.d renamed as yourfile.d
[email protected]:/tmp/q$ ls
yourfile.a yourfile.b yourfile.c yourfile.d
[email protected]:/tmp/q$
betelgeuse:tmp james$ ls myfile.* yourfile.*
ls: yourfile.*: No such file or directory
myfile.a myfile.b
betelgeuse:tmp james$ for file
> in myfile.*
> do
> mv "${file}" "`echo $file | sed 's/myfile\./yourfile./'`"
> done
betelgeuse:tmp james$ ls myfile.* yourfile.*
ls: myfile.*: No such file or directory
yourfile.a yourfile.b
Kuncinya adalah, jika Anda pernah melihat contoh yang menunjukkan cara menghapus satu bagian dari nama file dengan regex, itulah satu-satunya contoh yang Anda butuhkan. Ekstensi tidak memiliki status khusus pada sistem file unix - ekstensi hanyalah bagian dari nama file yang kebetulan berada setelah .
karakter.