
youtube-dl을 사용하여 일부 파일을 다운로드했습니다. 이름은 늘 이렇다
foo - baar -PSUHDUWHDAIHDWU.ogg/mp3/...
이름이 다음과 같도록 폴더의 모든 파일 끝에 있는 임의의 문자(마지막 '-*' 잘라내기)를 어떻게 제거할 수 있습니까?
foo - baar.mp3/ogg/...
"이름 바꾸기"로 뭔가를 시도했지만 어떤 패턴을 사용해야할지 모르겠습니다. 내 생각엔 다음과 같아야 할 것 같아: "#-*"
답변1
를 사용하면 확장자의 파일 이름 끝에 rename
a 만 나타난다고 가정하면 다음 표현식을 사용할 수 있습니다..
s/-[^-]*\././
이는 a 까지 하이픈 이외의 문자가 오는 하이픈을 .
, 로 대체하여 .
마지막 하이픈과 그 뒤의 문자를 효과적으로 삭제합니다. 다음과 같이 사용하세요:
rename -n 's/-[^-]*\././' *
변경된 이름이 괜찮아 보이면 -n
.
답변2
패턴을 교체하여 해킹하는 대신 youtube-dl에 이러한 임의 문자(실제로는 비디오 ID)를 최종 파일 이름에 포함하지 않도록 지시할 수 있습니다. 이 작업은 다음으로 수행할 수 있습니다.출력 템플릿, 예를 youtube-dl -o "%(title)s.%(ext)s" 3CUz4M3M1r8
들어 결과는 입니다 Ton Steine Scherben - Alles verndert sich.mp4
.
답변3
bash
매개변수 확장 사용 :
#!/bin/bash
shopt -s extglob
for file in *(*mp3|*ogg); do
ini="${file%-*}"
ext="${file##*.}"
mv "$file" "${ini}.${ext}"
done
extglob
여기서는 의 및 매개변수 확장 기능을 사용했습니다bash
.ini
-
마지막 부분 부터 삭제하고 초기 부분을 포함합니다.ext
예를 들어 확장자가 포함됩니다ogg
.mp3
시험 :
$ ls
scr.sh Ton Steine Scherben - Ich will nicht werden, was mein Alter ist-WpLfJZvnWSw.ogg
Ton Steine Scherben - Alles verändert sich-3CUz4M3M1r8.ogg Ton Steine Scherben - Keine Macht für Niemand-XtMPGhXnzWE.mp3
Ton Steine Scherben - Der Traum ist aus-WYZCovq71XE.ogg Ton Steine Scherben - Komm schlaf bei mir-Nr9V_UH04eA.mp3
Ton Steine Scherben - Feierabend-BopYtPtjlkI.ogg
$ bash scr.sh
$ ls
scr.sh Ton Steine Scherben - Ich will nicht werden, was mein Alter ist.ogg
Ton Steine Scherben - Alles verändert sich.ogg Ton Steine Scherben - Keine Macht für Niemand.mp3
Ton Steine Scherben - Der Traum ist aus.ogg Ton Steine Scherben - Komm schlaf bei mir.mp3
Ton Steine Scherben - Feierabend.ogg
답변4
스크립트
#!/bin/bash
# Author : Serg Kolo
# Description: script for renaming files
# for http://askubuntu.com/q/626258/295286
for file in *; do
FILENAME=$( awk -F '-' '{gsub(" ","");print $1"-"$2}' <<< "$file")
EXTENSION=$( awk -F '.' '{print $2}' <<< "$file")
mv "$file" ./"$FILENAME.$EXTENSION"
done
결과