Saya menggunakan rename
semua waktu. Ini cukup sederhana, tetapi mudah-mudahan Anda tahu regex dasar:
rename "s/SEARCH/REPLACE/g" *
Ini akan menggantikan string SEARCH
dengan REPLACE
di setiap file (yaitu, *
). The /g
berarti global, jadi jika Anda memiliki SEARCH_SEARCH.jpg
, itu akan berganti nama REPLACE_REPLACE.jpg
. Jika Anda tidak memilikinya /g
, itu akan dilakukan hanya sekali, dan dengan demikian sekarang dinamai REPLACE_SEARCH.jpg
. Jika Anda ingin tidak peka huruf besar kecil, tambahkan /i
(mungkin itu, /gi
atau /ig
pada akhirnya).
Dengan ekspresi reguler, Anda dapat melakukan lebih banyak hal.
Perhatikan bahwa ini rename
adalah perintah prename
(alias Perl rename
), yang mendukung ekspresi reguler Perl lengkap. Ada lagi rename
yang menggunakan pola, dan tidak sekuat itu. prename
dulu diinstal secara default di Ubuntu (bersama dengan Perl), tetapi sekarang Anda mungkin harus melakukan:
sudo apt install rename
Berikut ini beberapa contoh:
Awalan
Tambahkan :
rename 's/^/MyPrefix_/' *
document.pdf
diganti namanya menjadi MyPrefix_document.pdf
Hapus :
Anda juga dapat menghapus string yang tidak diinginkan. Katakanlah Anda memiliki 20 file MP3 bernama like CD RIP 01 Song.mp3
dan Anda ingin menghapus bagian "CD RIP", dan Anda ingin menghapusnya dari semuanya dengan satu perintah.
rename 's/^CD RIP //' *
CD RIP 01 Song.mp3
untuk 01 Song.mp3
Perhatikan ruang ekstra di '^CD RIP '
, tanpa spasi semua file akan memiliki ruang sebagai karakter pertama dari file tersebut. Perhatikan juga, ini akan berfungsi tanpa ^
karakter, tetapi akan cocok CD RIP
di bagian mana pun dari nama file. The ^
jaminan itu hanya menghilangkan karakter jika mereka adalah awal file.
Akhiran
Tambahkan :
rename 's/$/_MySuffix/' *
document.pdf
diganti namanya menjadi document.pdf_MySuffix
Ubah :
rename 's/\.pdf$/.doc/' *
akan berubah Something.pdf
menjadi Something.doc
. (Alasan backslash adalah, .
adalah karakter wildcard di regexp jadi .pdf
cocok qPDF
sedangkan \.pdf
hanya cocok dengan string yang tepat .pdf
. Juga sangat penting untuk dicatat, jika Anda tidak terbiasa dengan BASH, Anda harus meletakkan backslash dalam tanda kutip! Anda mungkin tidak menghilangkan tanda kutip! atau gunakan tanda kutip ganda, atau bash akan mencoba menerjemahkannya. Untuk bash \.
dan "\."
sama dengan .
(tapi tanda kutip ganda dan garis miring terbalik digunakan, misalnya "\ n" untuk baris baru, tetapi karena "\."
bukan urutan mundur yang valid, itu bash diterjemahkan ke dalam .
)
Sebenarnya, Anda bahkan dapat melampirkan bagian-bagian string dalam tanda kutip, bukan keseluruhan: 's/Search/Replace/g'
sama dengan s/'Search'/'Replace'/g
dan s/Search/Replace/g
untuk BASH. Anda hanya perlu berhati-hati tentang karakter khusus (dan spasi).
Saya sarankan menggunakan -n
opsi ketika Anda tidak positif Anda memiliki ekspresi reguler yang benar. Ini menunjukkan apa yang akan diganti namanya, lalu keluar tanpa melakukannya. Sebagai contoh:
rename -n s/'One'/'Two'/g *
Ini akan mencantumkan semua perubahan yang akan dilakukan, seandainya Anda tidak menaruh -n
benderanya di sana. Jika terlihat bagus, tekan Upuntuk kembali, lalu hapus -n
dan tekan Enter(atau ganti dengan -v
untuk menampilkan semua perubahan yang dibuatnya).
Catatan : Versi Ubuntu di atas 17.04 tidak disertakan rename
secara default, namun masih tersedia di repositori. Gunakan sudo apt install rename
untuk menginstalnya