파일 이름의 중간 부분을 앞으로 이동

파일 이름의 중간 부분을 앞으로 이동

여러 날짜에 대해 이 스타일로 이름이 지정된 파일이 있는데 02.04.11 DJ Kilbot.mp3다음과 같이 이름 형식을 다시 지정하고 싶습니다 DJ Kilbot 2011-02-04.mp3. 즉, 현재 형식은 MM.DD.YY DJ-NAME.mp3이고 DJ-NAME YYYY-MM-DD.mp3몇 년 된 파일의 경우 가장 쉬운 방법은 무엇입니까? ?

답변1

cd해당 디렉터리로 이동하여 다음 명령을 실행합니다( 사용 perl-rename). 첫 번째 '미리보기'입니다.

rename -n 's/^([0-9]{2})\.([0-9]{2})\.([0-9]{2}) (.*)\.mp3$/$4 20$3-$1-$2.mp3/' *
02.04.11 DJ Kilbot.mp3 -> DJ Kilbot 2011-02-04.mp3

출력이 만족스러우면 실제로 실행해 보세요.

rename 's/^([0-9]{2})\.([0-9]{2})\.([0-9]{2}) (.*)\.mp3$/$4 20$3-$1-$2.mp3/' *

설명하다

  • rename -n:테스트 "모의 실행"을 실행합니다.
  • 's/FOO/BAR/'정규식을 FOO로 바꿉니다 BAR.
  • ^([0-9]{2})\.([0-9]{2})\.([0-9]{2}) (.*)\.mp3$: 캡처할 정규식입니다. 문자열의 시작 부분과 일치하고 그 뒤에 점으로 구분된 세 그룹(즉, 두 개의 연속 숫자)이 옵니다 ^(이스케이프된 경우). 그런 다음 공백과 괄호는 대체할 내용을 캡처합니다.[0-9]{2}\.(.*)\.mp3$()
  • $4 20$3-$1-$2.mp3$4: 네 번째 캡처 그룹( ) 이상의 DJ 이름을 (.*)지정된 문자열의 나머지 부분(예: 세 번째, 첫 번째 및 두 번째 그룹)으로 바꿉니다.
  • *: 디렉토리의 모든 파일에 대해 작동합니다.

단순화하다

이 정규 표현식에는 몇 가지 오류 검사 기능이 내장되어 있습니다. 모든 파일의 이름이 일관되게 지정되었다고 확신하는 경우 이를 다음과 같이 약간 단순화할 수 있습니다.

rename 's/^(..)\.(..)\.(..) (.*)\.mp3$/$4 20$3-$1-$2.mp3/' *

답변2

아니요 rename:

for file in *.mp3
do
  no_extension=${file%.mp3}
  the_date=$(echo "${no_extension}" | cut -d ' ' -f 1)
  year=20${the_date:6}
  month=${the_date:0:2}
  day=${the_date:3:2}
  date_part=${year}-${month}-${day}
  dj_part=$(echo "${no_extension}" | cut -d ' ' -f 2-)
  new_file="${dj_part} ${date_part}.mp3"
  mv "${file}" "${new_file}"
done

설명하다:

  • for file in *.mp3.mp3확장자로 끝나는 현재 디렉터리의 모든 파일을 반복합니다.
  • ${file%.mp3}.mp3다음을 사용하여 파일 끝에서 확장명을 제거합니다.bash 문자열 조작
  • $(echo ${no_extension} | cut -d ' ' -f 2-)cut문자로 구분된 문자열을 구문 분석할 수 있는 이 유틸리티를 사용하여 파일 이름의 날짜 부분을 추출합니다.
  • 그런 다음 하위 문자열을 추출하여 날짜 형식을 변경합니다.
  • "${dj_part} ${date_part}.mp3"우리가 만든 부품을 문자열로 연결한 것뿐입니다.
  • mv "${file}" "${new_file}"파일명 변경

답변3

파일 이름이 정확히 이런 식으로 지정되었다고 가정합니다.

for file in "*.mp3";do 
  date="${file:0:8}" #get the date in the filename. 
  dj="${file%.mp3}" #strip the extension off the filename. 
  dj="${dj:8}" # get dj name.
  mv -nv $file "$dj $date.mp3" # -n don't overwrite files. 
done

답변4

파이 이름 바꾸기GUI가 있으며 자동 미리보기가 가능합니다.
이것을 원본 파일 이름 패턴 필드에 입력하세요.

{#}.{#}.{#} {X}.mp3

이름이 변경된 파일 이름 모드로 들어갑니다.

{4} {3}-{1}-{2}.mp3

유일한 단점은 "Windows" 모드(1, 10, 11, 2, 3, 4...)로 정렬된다는 것입니다.

관련 정보