Dalam kasus khusus Anda, Anda dapat menggunakan bash
perintah berikut ( bash
adalah shell default di macOS):
for f in *.png; do echo mv "$f" "${f/_*_/_}"; done
Catatan: Jika ada kemungkinan nama file Anda dimulai dengan -
, tempatkan --
sebelum mereka [1]:
mv -- "$f" "${f/_*_/_}"
Catatan: echo
ditambahkan sebelum melakukan uji mv
coba. Hapus itu untuk melakukan penggantian nama yang sebenarnya.
Anda dapat menjalankannya dari baris perintah atau menggunakannya dalam skrip.
"${f/_*_/_}"
adalah aplikasi bash
perluasan parameter : pola pencocokan substring (pertama) _*_
diganti dengan literal _
, secara efektif memotong token tengah dari namanya.
- Perhatikan bahwa
_*_
ini adalah pola (ekspresi karakter pengganti, seperti yang juga digunakan untuk globbing), bukan ekspresi reguler (untuk mempelajari pola, menjalankan, man bash
dan menelusuri Pattern Matching
).
Jika Anda sering kali mengganti nama file secara batch, pertimbangkan untuk menginstal alat khusus seperti rename
utilitas berbasis Perl . Di macOS Anda dapat menginstalnya menggunakan manajer paket populer Homebrew sebagai berikut:
brew install rename
Inilah persamaan dari perintah di atas menggunakan rename
:
rename -n -e 's/_.*_/_/' *.png
Sekali lagi, perintah ini melakukan uji coba; hapus -n
untuk melakukan penggantian nama sebenarnya.
- Serupa dengan
bash
solusi, s/.../.../
melakukan substitusi teks, tetapi - tidak seperti in bash
- ekspresi reguler digunakan.
[1] Tujuan dari argumen khusus --
, yang didukung oleh sebagian besar utilitas, adalah untuk memberi sinyal bahwa argumen selanjutnya harus diperlakukan sebagai operan (nilai), bahkan jika mereka terlihat seperti opsi yang dimulai dengan -
, seperti yang dicatat oleh Jacob C.