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테스트에 사용되는 파일의 이름을 바꾸려면 제거하세요.

관련 정보