bash, pliki, zmień nazwy plików, zmień pozycje

Dec 22 2020

Jak zmienić nazwę

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

do

sluno-call-metroua-status-20201027.mp4
sluno-call-deriva-20201103.mp4
sluno-call-metroua-status-20201103.mp4
sluno-call-makrocz-20201105.mp4
...

Po prostu przenieś datę / ciąg znaków na pozycję 7-14na koniec nazwy pliku.

Dzięki.

Odpowiedzi

7 bac0n Dec 22 2020 at 22:04

mmv działa dobrze przy nieskomplikowanej zmianie nazw plików .

mmv '*-*-*-*.mp4' '#1-#3-#4-#2.mp4'

Pomocne może być również posiadanie dodatkowych punktów odniesienia, aby nie zmieniać nazwy na coś innego, zwłaszcza jeśli w tym samym katalogu mogą znajdować się inne pliki.

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

Gdybym miał zrobić to minimum, mva bashpójdę z pętli for i bashwbudowane BRE dopasowywania.

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

Zastosowanie rename:

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

Usuń, -njeśli jesteś zadowolony z wyniku.

Aby uzyskać wyjaśnienie, odwiedź to .

JohnP Dec 30 2020 at 01:47

Inna opcja:

$ qmv {wzór}

upuści 2 kolumny nazw plików do wybranego edytora.

Zmodyfikuj prawą kolumnę, aby uzyskać żądane nazwy plików.

Lewa kolumna to oryginalna nazwa. Nie można zmienić kolumny początkowej odpowiedniej grupy, więc automatyczne zawijanie może przeszkadzać.

W rękach eksperta z każdym edytorem może to być szalenie szybkie, szczególnie w przypadku kolumn vim i trybów wizualnych.

Ogólnie używam zmiany nazwy, ale w przypadku złożonych potrzeb dobrze jest zobaczyć dokładne nazwy w edytorze.