Di shell, seseorang dapat melakukannya dengan mudah:
for x in *]*.avi ; do
mv -i "$x" "${x%]*.avi}.avi"
done
Shell dapat menghasilkan daftar nama file hanya dengan glob biasa, dan ${var%pattern}
menghapus pola pencocokan (terpendek) dari ujung string dalam variabel var
. Karena ekstensi terakhir selalu .avi
, saya baru saja menghapusnya dengan polanya dan menambahkannya kembali. Dengan tanda kutip, ini harus bekerja dengan nama file yang mengandung spasi juga, seperti Fancy Name for a Show.s01e01]Asdf.avi
Ini akan mengganti nama file. Anda memerlukan \w* untuk menandakan sejumlah karakter alfanumerik.
rename 's/\]\w*//' *
Referensi:http://www.troubleshooters.com/codecorn/littperl/perlreg.htm#UsingSimpleWildcards
Ini semua tidak praktis - jawaban lainnya jauh lebih cepat dan lebih pendek - tapi...
Anda dapat menggunakan PowerShell! Microsoft membuka sumbernya baru-baru ini dan menjadikannya lintas platform. Untuk pengunduhan dan petunjuk penginstalan untuk OS Anda, lihat bagian "Dapatkan PowerShell".
Setelah Anda menginstalnya, Anda dapat menggunakan skrip singkat ini:
Get-ChildItem -File '*]*.avi' | ForEach-Object {
Rename-Item $_ -NewName (($_.Name -Split ']')[0] + '.avi')
}
Pada dasarnya, ini melewati setiap objek di direktori saat ini yang merupakan file yang cocok dengan *]*.avi
, dapatkan bagian sebelum braket, tacks .avi
kembali ke sana, dan tetapkan itu sebagai nama baru.
Untuk menjalankannya langsung dari Bash, gunakan one-liner semi-golf ini:
powershell -command $'gci -File \'*]*.avi\'|%{rename-item $_ -NewName (($_.Name -Split \']\')[0]+\'.avi\')}'
Kutipan lolos dari jawaban Stack Overflow ini.
(Diuji di Bash pada Ubuntu di Windows. Mungkin ada cara yang jauh lebih singkat untuk melakukannya dengan PowerShell, tetapi saya ingin menunjukkan sesuatu yang dapat dipahami oleh orang yang tidak mengetahui ekspresi reguler.)