기존 이름처럼 이름을 바꾸려는 디렉터리에 여러 개의 파일이 있습니다.
1937 - Snow White and the Seven Dwarves.avi
1940 - Pinocchio.avi
대상 이름:
Snow White and the Seven Dwarves (1937).avi
Pinocchio (1940).avi
건배
답변1
Perl 기반 rename
(때때로 라고도 함 )을 사용하는 경우 prename
이는 실제로 가능합니다 . 정규식을 알고 있다면 훨씬 더 간단합니다.
rename -n 's!^(\d+) - (.*)\.(...)$!$2 ($1).$3!' *.avi
그 기능은 소스 파일 이름을 세 부분으로 나누는 것입니다. 첫 번째 예를 사용하면 다음과 같습니다.
- 1937년
- 백설 공주와 일곱 난장이
- 동영상
이는 명령에서 $1
, ,에 할당됩니다. $2
(이것들은 변수가 아닙니다.) 그런 다음 다른 순서로 다시 합칩니다.$3
rename
bash
제안된 결과에 만족하면 변경 -n
하거나 -v
완전히 제거할 수도 있습니다.
답변2
이것이 bash 만 사용하여 수행하는 방법입니다.
cd movie_directory
ls -1 | while read line
do
year=$(echo ${line} | awk '{print $1}')
name=$(echo ${line} | cut -d " " -f 3- | cut -d"." -f 1)
ext=$(echo ${line} | cut -d " " -f 3- | cut -d"." -f 2)
newname=${name}" ("${year}")."${ext}
mv "${line}" "${newname}"
done
가정:
.
파일 이름에는 연도 사이에 공백 문자가 포함되지 않으며 -
파일 이름은 실제로 공백 tab
이나 기타 인쇄할 수 없는 문자가 아닌 공백입니다.