다음과 같은 이름을 가진 파일이 여러 개 있습니다.
file1, A.ext
file1, The.ext
이름을 다음으로 변경해야 합니다.
A file1.ext
The file1.ext
즉, 쉼표를 제거하고 기사를 끝에서 처음으로 이동해야 합니다. 어떻게 해야 하나요?
나는 rename 명령을 조사했지만 Perl 정규식에 대한 경험이 없으며 이 말도 안되는 명령을 생각해 냈지만 작동하지 않으며 절망을 보여주기 위해 그대로 둡니다.
rename 's/(?<=[A-Z a-z \s]*),\sA//' *
답변1
당신이 필요로 할:
rename -n 's/^([^,]*),\s*(.*)\.ext$/$2 $1.ext/' *
이는
^([^,]*),
파일 이름 시작 부분에서 첫 번째 쉼표가 나타날 때까지 쉼표를 제외한 모든 항목과 일치합니다.이는
\s*(.*)\.ext$
0개 이상의 공백 뒤에 아무 것도 오고 로 끝나는 것과 일치합니다.ext
.및 는 각각 및 에 대한 역참조
$2
입니다 .$1
(.*)
([^,]*)
다음과 같이 이름이 변경됩니다.
rename(a single file,.ext, a single file.ext)
rename(a single file, some thing.ext, some thing a single file.ext)
rename(file1, A.ext, A file1.ext)
rename(file1, the.ext, the file1.ext)
P,s: -n
테스트에 사용되는 파일의 이름을 바꾸려면 삭제합니다.