bash, file, ganti nama file, ganti posisi

Dec 22 2020

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-14ke akhir nama file.

Terima kasih.

Jawaban

7 bac0n Dec 22 2020 at 22:04

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, mvdan bashsaya akan menggunakan for-loop dan bashbuiltin BRE matching.

for i in *.mp4; do \
    [[ $i =~ ^sluno-(.*)-call-(.*).mp4 ]] && \ mv -- "$i" "sluno-call-${BASH_REMATCH[2]}-${BASH_REMATCH[1]}.mp4"; \
done
4 pLumo Dec 22 2020 at 20:46

Penggunaan rename:

rename -n 's/^(.*?)-(.*?)-(.*?)(\.mp4)$/$1-$3-$2$4/' *.mp4

Hapus -njika Anda senang dengan hasilnya.

Untuk penjelasan, kunjungi ini .

JohnP Dec 30 2020 at 01:47

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.