
다음과 같은 수십 개의 파일이 있습니다.
title.mkv]-[72+167] - "" yEnc 637005001 (1+889)
' 이후의 모든 내용을 삭제하고 싶습니다..mkv"
나에게 도움이 될만한 정규식을 찾아보았지만 사용 방법을 이해할 수 없습니다.
누군가 나를 도와줄 수 있나요?
답변1
등에 대한 참고 사항은 rename
다음 을 참조하십시오.prename
- Debian/Ubuntu의 이름 바꾸기 유틸리티가 CentOS와 같은 다른 배포판의 유틸리티와 다른 이유는 무엇입니까?
- 이름 바꾸기, 이름 바꾸기, 파일 이름 바꾸기 등 모든 이름 바꾸기는 무엇입니까?
이 답변에서는 util-linux 형식이 아닌 Perl 변형이 사용됩니다. 그렇지 않은 경우:
$ rename --version
rename from util-linux 2.31.1
하지만:
$ rename --version
/usr/bin/rename using File::Rename version 0.20
또는 유사합니다.
Perl 이름 바꾸기:
rename 's/\.mkv.*/.mkv/s' ./*.mkv*
먼저 옵션 을 사용하여 -n
원하는 대로 작동하는지 확인하세요.
rename -n 's/\.mkv.*/.mkv/s' ./*.mkv*
간단히 말해서:
s/\.mkv.*/.mkv/s
이다:
substitute/<THIS>/<WITH THIS>/s
\.mkv.*
리터럴 점 \.
과 문자열 mkv
, 마지막으로 모든 문자( 플래그가 \n
필요한 문자 포함 s
)와 0회 이상 일치합니다 .*
.
결과 .mkv<anything>
는 로 대체됩니다 .mkv
.
다음과 같이 표현을 읽고 표현하는 데 도움이 되는 도구가 있습니다.https://regex101.com/
답변2
안에 bash
:
for f in *; do [[ "$f" =~ ^.+\.mkv ]] && mv "$f" "${BASH_REMATCH[0]}"; done
답변3
와 함께zsh
'에스zmv
:
autoload zmv
zmv -v '(*.mkv)*' '$1'
이후의 부품을 제거합니다.맨 오른쪽.mkv
파일 이름에 가 나타납니다 (이름 foo.mkv-bar.mkv-whatever
이 로 변경됨 foo.mkv-bar.mkv
).
에 대한맨 왼쪽발생( foo.mkv
대신 해당 파일의 이름을 바꾸려면) 으로 끝나는 문자열 *.mkv
과 일치 하지만 그렇지 않으면 "제외" 를 사용하여 최소한 하나의 문자가 뒤에 오는 것을 포함하지 않는 것으로 바꿀 수 있습니다.*.mkv~*.mkv?*
.mkv
.mkv
~
글로브 연산자.
답변4
스크립트 bash에서
#!/bin/bash
for i in *.mkv*
do
j=$(echo "$i" | sed -e 's/\.mkv.*$/.mkv/')
mv -- "$i" "$j"
done