변환을 사용하여 배치 jpg 파일의 이름을 png로 바꾸는 방법

변환을 사용하여 배치 jpg 파일의 이름을 png로 바꾸는 방법

.jpg로 변환하려는 파일이 여러 개 있다고 가정해 보겠습니다 .png. 파일 구조는 다음과 같습니다.

00-01.jpg 
00-02.jpg 
00-03.jpg 
00-04.jpg 
00-05a.jpg
00-05b.jpg
01-01.jpg 
01-02.jpg 
01-03a.jpg
01-03b.jpg
01-04a.jpg
01-04b.jpg

00-01.jpg이제 then 등 ACDfff001.png 으로 이름을 바꾸고 싶습니다 . 하지만 도착하면 개별적 으로 이름을 지정 하고 싶습니다 .00-02.jpgACDfff002.png00-05a.jpg00-05b.jpgACDfff005a.pngACDfff005b.png

예를 들어 최종 결과는 다음과 같습니다.

00-01.jpg  ->  ACDfff001.png
00-02.jpg  ->  ACDfff002.png
00-03.jpg  ->  ACDfff003.png
00-04.jpg  ->  ACDfff004.png
00-05a.jpg ->  ACDfff005a.png
00-05b.jpg ->  ACDfff005b.png
01-01.jpg  ->  ACDfff006.png
01-02.jpg  ->  ACDfff007.png
01-03a.jpg ->  ACDfff008a.png
01-03b.jpg ->  ACDfff008b.png
01-04a.jpg ->  ACDfff009a.png
01-04b.jpg ->  ACDfff009b.png

Bash나 Python에서 이것이 가능합니까?

답변1

이는 시작점입니다. 인덱스가 9까지만 가능하다고 가정합니다. 그렇지 않은 경우 인덱스를 확장해야 합니다.

#!/bin/bash

index=0
lastseq=
for file in *.jpg
do
  base=$(basename "$file" .jpg)
  lastchar=${base: -1:1}
  if [[ $lastchar =~ [[:digit:]] ]]
  then
    index=$((index + 1))
    newname=$(printf "ACDfff%03d" $index)
    lastseq=$lastchar
  else
    seclast=${base: -2:1}
    if [[ $seclast != $lastseq ]]
    then
      index=$((index + 1))
      lastseq=$seclast
    fi
    newname=$(printf "ACDfff%03d%s" $index $lastchar)
  fi
  echo mv "$file" "${newname}.png"
done

관련 정보