Saya menggunakan renamesemua waktu. Ini cukup sederhana, tetapi mudah-mudahan Anda tahu regex dasar:
rename "s/SEARCH/REPLACE/g" *
Ini akan menggantikan string SEARCHdengan REPLACEdi setiap file (yaitu, *). The /gberarti 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, /giatau /igpada akhirnya).
Dengan ekspresi reguler, Anda dapat melakukan lebih banyak hal.
Perhatikan bahwa ini renameadalah perintah prename(alias Perl rename), yang mendukung ekspresi reguler Perl lengkap. Ada lagi renameyang menggunakan pola, dan tidak sekuat itu. prenamedulu 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.mp3dan 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.pdfmenjadi Something.doc. (Alasan backslash adalah, .adalah karakter wildcard di regexp jadi .pdfcocok qPDFsedangkan \.pdfhanya 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'/gdan s/Search/Replace/guntuk BASH. Anda hanya perlu berhati-hati tentang karakter khusus (dan spasi).
Saya sarankan menggunakan -nopsi 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 -nbenderanya di sana. Jika terlihat bagus, tekan Upuntuk kembali, lalu hapus -ndan tekan Enter(atau ganti dengan -vuntuk menampilkan semua perubahan yang dibuatnya).
Catatan : Versi Ubuntu di atas 17.04 tidak disertakan renamesecara default, namun masih tersedia di repositori. Gunakan sudo apt install renameuntuk menginstalnya