Ada perintah Perlrename
yang harus melakukan trik. Hati-hati: ada beberapa perintah berbeda yang dipanggil rename
, jadi pastikan Anda telah mendapatkan skrip Perl yang mengharapkan perlexpr
argumennya. Ini adalah rename
perintah yang disediakan oleh perl
paket pada Debian dan turunannya (Ubuntu, Mint, ...), tetapi tidak pada distribusi lain yang mungkin memiliki utilitas berbeda yang disebut rename
.
martin@martin ~/test % touch a.txt
martin@martin ~/test % touch b.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
Seperti yang Anda lihat, ini idempoten - itu tidak akan menambah awalan lagi ketika Anda menyebutnya berkali-kali.
Ia bekerja dengan mengganti awal (nol-panjang) dari string ( ^
) atau mulai diikuti oleh prefix
string opsional dengan prefix
.
Saya akan meninggalkan encapsulating ini dalam skrip shell atau fungsi shell sebagai latihan untuk Anda :)
Postfix sedikit lebih sulit, karena Anda harus mencari tahu bagian mana dari nama file yang merupakan ekstensi ...