
我用 youtube-dl 下載了一些檔案。名字總是這樣
foo - baar -PSUHDUWHDAIHDWU.ogg/mp3/...
如何從資料夾的所有檔案末尾刪除這個隨機字母(剪切最後一個“-*”),以便名稱為:
foo - baar.mp3/ogg/...
我嘗試了“重命名”,但我不知道該使用什麼模式。我想應該是這樣的:”#-*”
答案1
對於rename
,假設 a.
僅出現在副檔名的檔名末尾,則可以使用下列表達式:
s/-[^-]*\././
這會將連字符後跟連字符以外的字符替換為.
, ,從而.
有效刪除最後一個連字符及其後面的字符。這樣使用它:
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
結果