Sebagai tindak lanjut dari pertanyaan saya sebelumnya , jika saya memiliki beberapa file formulir
sw.ras.001
sw.ras.002
sw.ras.003
…
Perintah apa yang bisa saya gunakan untuk menghapus ras.
di tengah semua file?
Sebagai tindak lanjut dari pertanyaan saya sebelumnya , jika saya memiliki beberapa file formulir
sw.ras.001
sw.ras.002
sw.ras.003
…
Perintah apa yang bisa saya gunakan untuk menghapus ras.
di tengah semua file?
ras
, yaitu berakhir dengansw..001
, atauras.
, meninggalkansw.001
?\.
dalam pola.Jawaban:
Anda dapat melakukan ini dengan modifikasi yang cukup kecil dari salah satu jawaban dari pertanyaan terakhir:
atau
Penjelasan:
rename
adalahperl
script yang mengambilperl
ekspresi reguler dan daftar file, berlaku regex untuk setiap nama file pada gilirannya, dan mengganti nama setiap file untuk hasil dari penerapan regex. Dalam kasus kami,ras
cocok harfiah dan\.
cocok literal sebuah.
(sebagai.
sendiri menunjukkan karakter apapun selain baris baru), dan menggantikan yang dengan apa-apa.The
for
Loop mengambil semua file yang dimulai dengansw.ras.
(standar shell gumpal) dan loop atas mereka.${var/search/replace}
pencarian$var
untuksearch
dan menggantikan kejadian pertama denganreplace
, sehingga${file/ras./}
kembali$file
dengan yang pertamaras.
dihapus. Perintah dengan demikian mengubah nama file menjadi minus nama yang samaras.
. Perhatikan bahwa dengan pencarian ini dan ganti,.
diambil secara harfiah, bukan sebagai karakter khusus.sumber
Pilihan lain adalah menggunakan mmv (Mass MoVe dan ganti nama):
Jangan lupa untuk menggunakan tanda kutip tunggal di sekitar pola Anda, jika bintang-bintang akan diperluas pada tingkat shell.
Utilitas tidak selalu tersedia tetapi jika tidak, Anda dapat menginstalnya dengan:
Lihat halaman manual di sini .
sumber
Dalam setiap shell POSIX-compliant (
bash
,dash
,ksh
, dll):Atau dengan
rename
:sumber
Saya baru-baru ini harus melakukan penggantian nama massal sejumlah file di mana saya harus mengganti kemunculan terakhir karakter di mana karakter muncul beberapa kali dalam nama file. Dalam kasus khusus ini saya harus mengganti tanda hubung terakhir
-
dengan garis bawah_
, memutarnya:dalam hal ini:
Butuh beberapa waktu tetapi ini akhirnya berhasil:
Sini:
${i%-*}
cocok dengan awal nama file hingga kemunculan dasbor terakhir-
${file##*-}
cocok dengan sisa nama file setelah kemunculan dasbor terakhir-
sumber