Saya memiliki banyak file di folder dan saya ingin menambahkan awalan atau akhiran (tidak keduanya ). Saya memeriksa di sini dan menemukan bahwa saya dapat menggunakan
for filename in *.jpg; do mv "$filename" "prefix_$filename"; done;
untuk menambahkan awalan ke semua file yang diakhiri .jpg
(dan jika saya menghapus .jpg
, itu akan menambahkan awalan ke semua file di folder saat ini).
Namun, saya ingin bisa
- Tambahkan sufix (yaitu, ganti nama
filename.ext
menjadifilename.whatever.ext
), - Periksa apakah awalan atau akhiran sudah ada dan kemudian lewati,
- Buat alias yang menerima argumen seperti
addprefix whatever *.ext
atauaddsufix whatever *.*
shell
shell-script
rename
Orang Brasil itu
sumber
sumber
if [ $f == $prefix* ]
dan Anda dapat mengubah sufiks satu denganif [ $f == *$suffix$([ ! -z $extension ] && echo -n '.')$extension ]
sekitar beberapa perintah mv di adduffix. Untuk (2) seharusnya sudah berfungsi pada file tanpa ekstensi, kecuali saya seorang programmer yang mengerikan.Ada perintah Perl
rename
yang harus melakukan trik. Hati-hati: ada beberapa perintah berbeda yang dipanggilrename
, jadi pastikan Anda telah mendapatkan skrip Perl yang mengharapkanperlexpr
argumennya. Ini adalahrename
perintah yang disediakan olehperl
paket pada Debian dan turunannya (Ubuntu, Mint, ...), tetapi tidak pada distribusi lain yang mungkin memiliki utilitas berbeda yang disebutrename
.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 olehprefix
string opsional denganprefix
.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 ...
sumber
rename
hadir. Dan saya tahu sufiks sedikit lebih sulit, itu tidak tercakup dalam pertanyaan terkait, dan saya seorang pemula di linux, bash, shell script, perl dan ekspresi reguler, jadi "sedikit lebih keras" cukup sulit bagi saya ! :)Dengan
zsh
:~
adalah operator globbing yang berarti kecuali dalamzsh
.sumber
Contoh sederhana untuk mengubah awalan dan ekstensi semua gambar di folder saat ini.
Jika Anda ingin memeriksa bagaimana itu akan mempengaruhi data Anda sebelum mengubahnya ganti mv dengan gema
output untuk IMG_7993.JPG adalah EG_IMG_7993.jpg
sumber