rename 명령을 사용하여 이러한 파일 이름을 수정하려면 어떻게 해야 합니까?

rename 명령을 사용하여 이러한 파일 이름을 수정하려면 어떻게 해야 합니까?

다음과 같은 파일을 변경하려고 합니다.

01 Track name.mp3

입력하다

01 - Track name.mp3

지금까지 나의 헛된 시도는

rename '0. ' '$&- ' *.mp3
rename 's/0. /$&- /' *.mp3
rename '/0. /' '/$&- /' *.mp3
rename 's/0.\ /$&-\ /' *.mp3
rename 's/0.\ /$1-\ /' *.mp3

답변1

Perl rename명령을 가정합니다.

마지막 명령에 매우 가깝습니다. rename 's/(0.) /$1 - /' *.mp3작동합니다. 공백을 이스케이프 처리할 필요가 없으며 정규식에서는 특별한 의미가 없으며(파일 이름에는 특별한 의미가 있지만 여기서는 중요하지 않음) 재사용하려는 부분 주위에 괄호가 필요합니다.

답변2

명령을 사용해야 합니까 rename?

$ ls
01 Track name.mp3  02 Track name.mp3  03 Track name.mp3

$ for a in *.mp3
> do
> mv -i "$a" "${a%% *} - ${a#* }"
> done

$ ls
01 - Track name.mp3  02 - Track name.mp3  03 - Track name.mp3

답변3

$ rename 's/^(\d\d)\s*/$1 - /' *.mp3

이렇게 하면 모든 MP3 파일의 이름이 파일 이름 시작 부분에 두 자리 숫자로 바뀌고 숫자 뒤에 공백-대시-공백이 삽입됩니다. 그래서 01 Track name.mp3그것은 될 것입니다01 - Track name.mp3

직접 시도한 결과 모든 파일 이름은 숫자 0으로 시작하며 대시를 삽입하려는 것 같습니다.곧장숫자 뒤에 공백이 옵니다:

$ rename 's/^(0\d)\s*/$1- /' *.mp3

01 Track name.mp3로 변환됩니다 01- Track name.mp3.

답변4

두(세)개의 지우기 명령이 있습니다. 하나는유틸리티Linux모든 비임베디드 Linux 시스템에는 소프트웨어 패키지가 설치되어 있으며 그 중 하나(실제로는 두 가지 변형)가 Perl을 기반으로 합니다. 바라보다이름 바꾸기, 이름 바꾸기, 파일 이름 바꾸기 등 모든 이름 바꾸기는 무엇을 의미합니까?

util-linux 명령은 매우 기본적이지만 드물게 원하는 작업을 수행할 수 있습니다. 첫 번째 공백을 space-dash-space로 바꿉니다.

rename ' ' ' - ' [0-9][0-9]\ [^-]*

관련 정보