여러 파일의 이름을 바꾸지만 숫자 부분은 유지합니다.

여러 파일의 이름을 바꾸지만 숫자 부분은 유지합니다.

다음과 같은 파일이 많이 있습니다.

pic100.png
pig102.png
box103a.png
superb103b.png
px103c.png
rotor110 - new.png
ready1323 (yellow car).png
motorhome1036x red circle.png
...

따라서 파일이 세 부분으로 구성될 수 있음을 알 수 있습니다.

  • 임의의 문자열이 될 수 있는 접두사
  • "a", "b" 등과 같은 접미사가 포함될 수 있는 숫자입니다.
  • 선택적인 어미는 항상 문자열이고 "(노란색 자동차)", "빨간색 원" 등과 같이 공백으로 시작합니다.

나에게 필요한 것은 다음과 같습니다. 한 번의 작업으로 다음을 수행하고 싶습니다.

  • 접두어를 내가 원하는 접두어로 변경하세요.
  • 번호와 접미사(a, b, c...)가 있는 경우 이를 유지합니다.
  • 결말을 없애라

첫 번째 예를 사용하여 이를 다음과 같이 변환하고 싶을 수도 있습니다.

object100.png
object102.png
object103a.png
object103b.png
object103c.png
object110.png
object1323.png
object1036x.png

어떻게 해야 합니까? 보시다시피 제가 보관하고 있는 유일한 것은 숫자와 접미사 "a, b, c"뿐입니다.

간단하게 하기 위해 명령은 지정된 디렉터리의 모든 파일에서 작동해야 합니다.

미리 감사드립니다.

답변1

이런 종류의 작업을 수행하는 표준 방법은 sed를 사용하여 새 파일 이름을 생성하는 것입니다.

ls | while read file; do
     new=$( echo $file | sed 's/[^0-9]*\([^ ]*\)[^.]*\(\..*\)*/object\1\2/' )
     mv "$file" "$new"
done

그렇게 하기 전에 명령을 검사하여 원하는 작업이 수행되는지 확인하고 백업을 만들어야 합니다.

관련 정보