ファイル名を変更し、拡張子の前の最後のX文字数を角括弧で囲みます。

ファイル名を変更し、拡張子の前の最後のX文字数を角括弧で囲みます。

私はアーカイブ目的で 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

.改行以外の任意の文字に一致します。

答え2

一度だけの使用におすすめするサードパーティツールの使用を気にしないのであれば、高度な名前変更ポータブルかつ無料です。

それ以外の場合はPowerShellを使用できます。この説明必要な情報はすべて記載されています。困ったときはお知らせください。

関連情報