bash, pliki, zmień nazwy plików, zmień pozycje
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-14
na koniec nazwy pliku.
Dzięki.
Odpowiedzi
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, mv
a bash
pójdę z pętli for i bash
wbudowane BRE dopasowywania.
for i in *.mp4; do \
[[ $i =~ ^sluno-(.*)-call-(.*).mp4 ]] && \ mv -- "$i" "sluno-call-${BASH_REMATCH[2]}-${BASH_REMATCH[1]}.mp4"; \
done
Zastosowanie rename
:
rename -n 's/^(.*?)-(.*?)-(.*?)(\.mp4)$/$1-$3-$2$4/' *.mp4
Usuń, -n
jeśli jesteś zadowolony z wyniku.
Aby uzyskać wyjaśnienie, odwiedź to .
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.