저는 YouTube를 사용하여 YouTube에서 수십 개의 파일을 다운로드했습니다 youtube-dl
. 좋은 기능입니다. 다 검색해 보니 상당수가 무작위 숫자와 대문자, 소문자로 끝나는 경우가 많았습니다. 좋다 video_name_number_of_video_-_the_name_of_episode_part_number-12BUInjas32d1.avi
.
$ rename -n 's/-.*avi/.avi/i' *.avi
– 첫 번째 것을 선택 -
하고 video_name_number_of_video_.avi
이름을 남겨주세요.
문자와 숫자 조합을 제거하는 옵션이 있나요?도움을 주시면 감사하겠습니다. 그리고 그 안에는 13자리 숫자만 있습니다.
추가: 누군가 내가 원하는 것이 무엇인지 물었습니다. 그래서 저는 분명히 파일 이름에서 그 13자리 숫자를 제거하고 그 이후로 행복하게 살고 싶습니다. 나의 목표를 이루기 위한 실용적인 질문을 과감하게 던졌습니다.
답변1
나는 이것이 YouTube 비디오 ID라고 가정합니다. 다음과 같은 정규식을 사용하여 제거할 수 있습니다.
s/-[^-.]{13}\.avi$/.avi/
이것을 여러 부분으로 나누면 다음과 같습니다.
-
- 단지 하이픈일 뿐[^-.]{13}
- 하이픈이나 마침표가 아닌 정확히 13자\.avi
- 파일 이름의 ".avi"와 일치합니다.$
앵커 포인트는 문자열(파일 이름)의 끝에 있습니다.
답변2
rename -n 's/-[^-]*\.avi$/.avi/i' ./*
아이디어는 문자열 끝에서 대시가 아닌 문자( ) 다음에 ( ) 가 오는 -
일련 의 문자열을 일치시키는 것입니다. 처음부터 끝까지 일치합니다 .*
[^-]
.avi
$
-.*avi
-
avi
그리고 zsh
:
autoload zmv # in ~/.zshrc as it's a damn useful command
zmv -n '(#i)(*)(-*)(.avi)' '$1$3'
(#i)
대소문자를 구분하는 와일드카드에 사용됩니다.
답변3
이것은 한 가지 방법입니다. 모든 파일 이름을 텍스트 파일 filename.txt에 넣습니다.
video_name_number_of_video_-_the_name_of_episode_part_number-12BUInjas32d1.avi video_name_number_of_video_-_the_name_of_episode_part_number-12BUInjas32d2.avi video_name_number_of_video_-_the_name_of_episode_part_number-12BUInjas32d3.avi
스크립트 작성:
#/bin/bash -
while IFS= read -r line
do
mv -- "$line" "${line%-*}.avi"
done < filename.txt