Linux에서 이름 바꾸기 명령에 대한 도움이 필요합니다.

Linux에서 이름 바꾸기 명령에 대한 도움이 필요합니다.

다음과 같은 이름을 가진 파일이 여러 개 있습니다.

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테스트에 사용되는 파일의 이름을 바꾸려면 삭제합니다.

관련 정보