Saya memiliki banyak file media seperti di bawah ini:
tvshow.s01e11]Bloodlines.avi
tvshow.s01e12]suffer.avi
tvshow.s01e13]NotMe.avi
Saya ingin mengubah nama mereka menjadi
tvshow.s01e11.avi
tvshow.s01e12.avi
tvshow.s01e13.avi
Saya sudah mencoba menggunakan rename tetapi ternyata saya tidak mendapatkan sintaks yang benar karena gagal.
krename
itu indah. Ini memiliki segala macam opsi yang kuat dan menunjukkan kepada Anda apa yang akan dilakukan sebelum benar-benar melakukannya. Anda bahkan bisa menggunakannya untuk menguji pola yang bisa Anda gunakan di bash nanti.Jawaban:
Ini akan mengubah nama file. Anda memerlukan \ w * untuk menandakan sejumlah karakter alfanumerik.
Referensi: http://www.troubleshooters.com/codecorn/littperl/perlreg.htm#UsingSimpleWildcards
sumber
rename
utilitas Perl , bukan yang dengan nama yang sama dari util-linux . Lihat di sini dan di siniDalam shell, seseorang dapat melakukannya dengan mudah:
Shell dapat menghasilkan daftar nama file hanya dengan bola dunia biasa, dan
${var%pattern}
menghapus pola pencocokan (terpendek) dari akhir string dalam variabelvar
. Karena ekstensi terakhir selalu.avi
, saya hanya menghapusnya dengan pola dan menambahkannya kembali. Dengan tanda kutip, ini harus bekerja dengan nama file yang mengandung spasi jugaFancy Name for a Show.s01e01]Asdf.avi
sumber
${x/]*([^.])}
harus dilakukan, itu menghilangkan braket dan sejumlah non-titik. (Meskipun gagal jika ada tanda kurung atau titik-titik lain, karena tidak dikunci sampai akhir string)${x/]*.avi}
dan hanya menambahkan.avi
seperti Anda. Tapi saya juga tidak puas dengan bagaimana ruang dalam nama akan pecah(`find . -name '*]*.avi'`)
. Saya senang memberikan metode perintah unix standar yang terbatas, karena mengubah nama tidak, tapi ini membuat saya keluar dari air.Ini semua tidak praktis - jawaban lainnya jauh lebih cepat dan lebih pendek - tetapi ...
Anda dapat menggunakan PowerShell! Microsoft membuka-sumbernya baru-baru ini dan membuatnya lintas platform. Untuk unduhan dan instruksi instalasi untuk OS Anda, lihat bagian "Dapatkan PowerShell" .
Setelah Anda menginstalnya, Anda dapat menggunakan skrip singkat ini:
Pada dasarnya, ia melewati setiap objek dalam direktori saat ini yang merupakan file yang cocok
*]*.avi
, mendapatkan bagian sebelum braket, mengemasnya.avi
kembali, dan menetapkan itu sebagai nama baru.Untuk menjalankannya langsung dari Bash, gunakan one-liner semi-golfed ini:
Kutipan yang keluar dari jawaban Stack Overflow ini .
(Diuji di Bash di Ubuntu pada Windows. Mungkin ada cara yang jauh lebih singkat untuk melakukannya dengan PowerShell, tapi saya ingin menunjukkan sesuatu yang dapat dipahami oleh orang-orang yang tidak tahu ekspresi reguler.)
sumber
Debian memiliki paket yang disebut mmv yang mungkin juga tersedia di distro lain, dan harus cukup mudah dikompilasi dari sumber jika tidak. Anda dapat menulis ini:
Anda dapat membaca halaman manual Ubuntu untuk perintah ini untuk lebih jelasnya.
sumber
Ini akan mencari pola dan mengganti teks menggunakan sed.
sumber