다음과 같은 파일을 변경하려고 합니다.
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]\ [^-]*