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

내가라면 최소한으로 할 일, mv하고 bash나는를위한 루프와 갈 것 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 칼럼과 비주얼 모드의 경우 매우 빠를 수 있습니다.

일반적으로 이름 바꾸기를 사용하지만 복잡한 요구에 대해서는 편집기에서 정확한 이름을 보는 것이 좋습니다.