Bash: 접두사를 접미사로 사용하여 파일 이름 바꾸기

Bash: 접두사를 접미사로 사용하여 파일 이름 바꾸기

상당히 간단한 작업을 수행하려고 하는데 이를 구현하는 방법이 조금 익숙하지 않습니다.

다음과 같은 파일 세트가 있고 x2_filename.png파일을 다음 형식으로 변환하려고 합니다.[email protected]

감사해요!

답변1

rename적절한 정규식과 함께 이 유틸리티를 사용할 수 있습니다 .

변환이 다음과 같다고 가정합니다.

nondigits digits underscore nondots dot anything
into
nondots atsign digits nondigits dot anything

명령은 다음과 같습니다:

$ prename -n 's/([^\d]*)(\d*)_([^.]*)\.(.*)$/$3\@$2$1.$4/' *

마지막 항목은 *이를 확장하여 해당 glob과 일치하는 모든 파일에 적용하고 이름 바꾸기 작업만 시뮬레이션하도록 전환하여 -n원하는 작업을 수행하는지 확인할 수 있습니다.

답변2

당신이 가지고 있다면prenameperl데비안 패키지와 함께 제공되는 명령( 스크립트)을 perl사용하면 다음을 수행할 수 있습니다:

prename -n 's/(\D+)(\d+)_([^.]+)/$3\@$2$1/' *.png

예:

$ ls -1
x1_filename.png
x2_filename.png
x3_filename.png
x4_filename.png

$ prename -n 's/(\D+)(\d+)_([^.]+)/$3\@$2$1/' *.png
x1_filename.png renamed as [email protected]
x2_filename.png renamed as [email protected]
x3_filename.png renamed as [email protected]
x4_filename.png renamed as [email protected]

prename -n--dry-run, 변경 사항이 만족스러우면 실행해 보세요.

prename 's/(\D+)(\d+)_([^.]+)/$3\@$2$1/' *.png

관련 정보