bash, file, ganti nama file, ganti posisi
Bagaimana cara mengganti nama
sluno-20201027-call-metroua-status.mp4
sluno-20201103-call-deriva.mp4
sluno-20201103-call-metroua-status.mp4
sluno-20201105-call-makrocz.mp4
sluno-20201105-call-metroua-testcall.mp4
sluno-20201105-call-sluno-ggtabak.mp4
sluno-20201110-call-makrocz.mp4
sluno-20201110-call-metroua-status.mp4
sluno-20201110-call-sluno-utccz.mp4
untuk
sluno-call-metroua-status-20201027.mp4
sluno-call-deriva-20201103.mp4
sluno-call-metroua-status-20201103.mp4
sluno-call-makrocz-20201105.mp4
...
Cukup pindahkan tanggal / string pada posisi 7-14
ke akhir nama file.
Terima kasih.
Jawaban
mmv berfungsi dengan baik untuk penggantian nama file yang tidak rumit .
mmv '*-*-*-*.mp4' '#1-#3-#4-#2.mp4'
Mungkin juga berguna untuk memiliki beberapa poin referensi lagi untuk memastikan tidak mengubah nama pada sesuatu yang lain, terutama di mana mungkin ada file lain di direktori yang sama.
mmv 'sluno-[0-9]*-call-[a-z]*.mp4' 'sluno-call-#3#4-#1#2.mp4'
^ ^ ^ ^
1 2 3 4
sluno-20201027-call-metroua-status.mp4
^------- ^-------------
1 2 3 4
Jika saya melakukannya dengan minimal, mv
dan bash
saya akan menggunakan for-loop dan bash
builtin BRE matching.
for i in *.mp4; do \
[[ $i =~ ^sluno-(.*)-call-(.*).mp4 ]] && \ mv -- "$i" "sluno-call-${BASH_REMATCH[2]}-${BASH_REMATCH[1]}.mp4"; \
done
Penggunaan rename
:
rename -n 's/^(.*?)-(.*?)-(.*?)(\.mp4)$/$1-$3-$2$4/' *.mp4
Hapus -n
jika Anda senang dengan hasilnya.
Untuk penjelasan, kunjungi ini .
Pilihan lain:
$ qmv {pattern}
akan menjatuhkan 2 kolom nama file ke editor pilihan Anda.
Ubah kolom kanan untuk mendapatkan nama file yang Anda inginkan.
Kolom kiri adalah nama asli. Kolom awal dari grup yang tepat tidak dapat diubah, jadi pembungkus otomatis mungkin menghalangi.
Di tangan seorang ahli dengan setiap editor, ini bisa menjadi sangat cepat, terutama untuk kolom vim dan mode visual.
Secara umum, saya menggunakan rename, tetapi untuk kebutuhan yang kompleks, melihat nama yang tepat di editor itu bagus.