파일에서 이름 패턴 삭제

파일에서 이름 패턴 삭제

youtube-dl을 사용하여 일부 파일을 다운로드했습니다. 이름은 늘 이렇다

foo - baar -PSUHDUWHDAIHDWU.ogg/mp3/...

이름이 다음과 같도록 폴더의 모든 파일 끝에 있는 임의의 문자(마지막 '-*' 잘라내기)를 어떻게 제거할 수 있습니까?

foo - baar.mp3/ogg/...

"이름 바꾸기"로 뭔가를 시도했지만 어떤 패턴을 사용해야할지 모르겠습니다. 내 생각엔 다음과 같아야 할 것 같아: "#-*"

답변1

를 사용하면 확장자의 파일 이름 끝에 renamea 만 나타난다고 가정하면 다음 표현식을 사용할 수 있습니다..

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

결과

여기에 이미지 설명을 입력하세요

관련 정보