디렉터리 이름의 마침표를 바꾸고 싶습니다.

디렉터리 이름의 마침표를 바꾸고 싶습니다.

온라인에서 찾은 모든 것이 실패했습니다. 저는 unbuntu 2204를 사용하고 있으며 미디어 라이브러리 디렉토리 이름의 마침표를 대체하기 위해 bash 스크립트를 작성하려고 합니다. 내가 찾은 최신 스크립트는 4년 전의 것인데 그 이후로 상황이 바뀌었다는 것을 알고 있습니다. 어쨌든 시도했지만 do 명령의 2번째 줄에 잘못된 구문 오류가 발생하여 실패했습니다.

나에게 필요한 것은 어린이 영화 카탈로그와 내 영화 카탈로그뿐입니다. 둘 다 400개 이상의 영화를 포함하고 있으며 일부는 제목에 오디오 유형 및 해상도와 같은 세부 정보가 포함되어 있습니다. 내 plex 라이브러리에 표시되기 때문에 신경 쓰지 않습니다. 영화 제목과 연도를 괄호 안에 표시하면 됩니다. Avatar.2019.4k.DTS.xyz가 아닌 Avatar(2019)입니다.

마침내 다운로드할 때 디렉토리 이름을 올바르게 바꿀 수 있는 다운로드 핸들러를 얻었지만 돌아가서 현재 라이브러리의 이름도 이 형식으로 바꾸고 싶습니다. 도움을 주시면 감사하겠습니다!

업데이트 이전에 모호한 점에 대해 사과드리며 이에 대한 도움을 주셔서 감사합니다. 나는 일반적인 Linux 명령 외에 스크립팅이나 어떤 종류의 언어도 모릅니다. 저는 2013년부터 우분투를 사용해왔습니다.

4년 전 스크립트 링크디렉터리 및 하위 디렉터리 이름의 모든 점을 반복적으로 공백으로 바꿉니다.

내 미디어는 NAS에 저장되고 부팅 시 마운트되며 다음 디렉터리에 있습니다: /home/plex/MediaShare/Kids_Movies/* 및 /home/plex/MediaShare/My_Movies/*

현재 디렉터리 이름은 다음과 같습니다.쿵푸 팬더.3.2016.1080p.BluRay.DDP.5.1.H.265.-iVy

그리고 필수 디렉터리 이름은 다음과 같습니다.쿵푸 팬더 3 (2016)

권장되는 ZSH 명령을 시도했지만 zmv가 인식되지 않습니다. 최신 셸은 5.8.1이며, 이는 내 기본 셸입니다. 나도 기꺼이 받아들인다쿵푸팬더.3.2016하지만 지금은 디렉터리 이름의 형식 확장자를 예측할 수 없습니다.

답변1

zsh대신 사용하십시오 bash:

autoload zmv
cd ~/Videos &&
  zmv -n '(**/)(*).(<1878-2024>).*(#q/)' '$1$2 ($3)'

-n결과가 만족스러우면 삭제(테스트 실행)하세요.

기본적으로 1878을 찾습니다.움직이는 말일반적으로 1878년에서 2024년 사이로 간주됩니다(이 글을 쓰는 시점에서 올해 제작된 첫 번째 영화, 작은 따옴표로 바꾸거나 ${(%):-"%D{%Y}"}"$(date +%Y)"외부에서 동적 계산을 수행할 수 있음), 디렉토리에는 점으로 둘러싸인 기본 이름이 있습니다( (#q/)패턴에서 일치 제한: 파일 형식목차)를 괄호로 묶고 그 뒤에 숫자 앞에 오는 내용이 옵니다.

점을 공백으로 바꾸고 연도 앞의 내용을 대문자로 표시하고 숫자를 정규화하려면(예: some.path/to/the.HORSE.in.motion.00001878.foo.bar로 바꾸십시오 some.path/to/The Horse In Motion (1878)) 다음과 같이 변경할 수 있습니다.

zmv -n '(**/)(*).(<1878-2024>).*(#q/)' '$1${(C)2//./ } ($(($3)))'

답변2

사용진주의rename, 나는 다음을 추천합니다:

rename -n 's/\.(\d{4})\.4k\.DTS/($1)/' Avatar.2019.4k.DTS.xyz

-n출력에 만족하면 제거합니다.

답변3

awk를 사용하여 파일 이름에서 원하는 것을 선택할 수 있습니다. 다음 명령을 고려하십시오.

$ echo "Avatar.2019.4k.DTS.xyz" | awk -F. '{print $1"("$2")"}'
Avatar(2019)

echo 명령을 전체 파일 목록으로 바꾸고 awk로 파이프한 다음 mv 또는 cp 명령을 적용합니다. 아주 짧은 스크립트로 할 수 있습니다.

관련 정보