여러 파일의 이름을 바꾸되 숫자 부분은 유지하세요.

여러 파일의 이름을 바꾸되 숫자 부분은 유지하세요.

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

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

이 작업을 수행하기 전에 명령이 원하는 대로 작동하는지 확인하고 백업을 만들어야 합니다.

관련 정보