bash、ファイル、ファイルの名前変更、位置の切り替え

Dec 22 2020

名前を変更する方法

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

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

日付/文字列7-14をファイル名の末尾に移動するだけです。

ありがとう。

回答

7 bac0n Dec 22 2020 at 22:04

mmvは、複雑でないファイルの名前変更に適しています。

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

また、特に同じディレクトリに他のファイルがある場合は、他の名前を変更しないように、参照ポイントをいくつか追加すると役立つ場合があります。

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

私がいた場合は最低限でそれを行うには、mvbash私は、forループとして行くだろうbashBREマッチング組み込み。

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

使用rename

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

-n出力に満足している場合は削除します。

説明については、こちらをご覧ください。

JohnP Dec 30 2020 at 01:47

別のオプション:

$ qmv {パターン}

選択したエディターに2列のファイル名をドロップします。

右側の列を変更して、必要なファイル名を設定します。

左の列は元の名前です。右側のグループの開始列は変更できないため、自動折り返しが邪魔になる可能性があります。

各エディターの専門家の手によって、これは、特にvim列とビジュアルモードの場合、非常に速くなる可能性があります。

通常、名前の変更を使用しますが、複雑なニーズの場合は、エディターで正確な名前を確認すると便利です。