私はアーカイブ目的で YouTuber のチャンネル全体をダウンロードするために youtube-dl を使っています。ビデオの命名には、ビデオのタイトル、ハイフン、11 文字のビデオ ID、最後にファイルの拡張子を使用するデフォルトの命名パターンを使用していました。
例えば
title of the video - (an example)-oHg5SJYRHA0.mp4
今後のダウンロードのために、ハイフンを削除し、ビデオ ID を角括弧で囲みました。問題は、古い命名規則に従ったビデオがすでに何百もあるため、新しい命名規則を取得するためだけに再ダウンロードして帯域幅を無駄にしたくないということです。
長さの異なるファイルの名前を変更して、「.mp4」の前に「]」を付けてハイフンにし、「].mp4」の前の 11 個のスペース/文字を「[」に置き換えるにはどうすればよいですか?
例えば
title of the video - (an example)[oHg5SJYRHA0].mp4
[編集] Linux および/または FreeNAS/BSD で動作するソリューションを希望していることを指定するのを忘れました。
答え1
Linuxでは、名前を変更する次のようにコマンドします:
rename 's/-\w{11}(?=\.mp4$)/[$&]/' *.mp4
正規表現の説明:
- # a hyphen
\w{11} # 11 word characters
(?= # positive lookahead, make sure we have after:
\.mp4 # a dot followed by mp4
$ # end of string
) # end lookahead
交換:
[ # opening square bracket
$& # the whole match (i.e. 11 characters)
] # closing squarre bracket
11 文字が単語文字以外の文字になる可能性がある場合は、次のようにします。
rename 's/-\K.{11}(?=\.mp4$)/[$&]/' *.mp4
.
改行以外の任意の文字に一致します。