ファイル名の中央部分を前に移動

ファイル名の中央部分を前に移動

複数の日付に対してこのスタイルで名前が付けられたファイルがあり02.04.11 DJ Kilbot.mp3ますDJ Kilbot 2011-02-04.mp3。つまり、現在の形式はMM.DD.YY DJ-NAME.mp3あり、DJ-NAME YYYY-MM-DD.mp3数年前のファイルの場合、最も簡単な方法は何ですか? ?

ベストアンサー1

cdそのディレクトリに移動して、次のコマンドを実行します(使用perl-rename)。最初の「プレビュー」です。

rename -n 's/^([0-9]{2})\.([0-9]{2})\.([0-9]{2}) (.*)\.mp3$/$4 20$3-$1-$2.mp3/' *
02.04.11 DJ Kilbot.mp3 -> DJ Kilbot 2011-02-04.mp3

出力が満足であれば、実際に実行してみてください。

rename 's/^([0-9]{2})\.([0-9]{2})\.([0-9]{2}) (.*)\.mp3$/$4 20$3-$1-$2.mp3/' *

説明する

  • rename -n:テスト「模擬実行」を実行します。
  • 's/FOO/BAR/'正規表現をFOOに置き換えますBAR
  • ^([0-9]{2})\.([0-9]{2})\.([0-9]{2}) (.*)\.mp3$:キャプチャする正規表現です。文字列の先頭に一致し、その後にドットで区切られた3つのグループ(つまり、2つの連続した数字)が続きます^(エスケープされている場合)。その後、スペースと括弧は置き換える内容をキャプチャします。[0-9]{2}\.(.*)\.mp3$()
  • $4 20$3-$1-$2.mp3$4:4番目のキャプチャグループ()以上のDJ名を、(.*)指定された文字列の残りの部分(3番目、1番目、2番目のグループなど)に置き換えます。
  • *:ディレクトリ内のすべてのファイルに対して機能します。

単純化する

この正規表現には、いくつかのエラーチェック機能が組み込まれています。すべてのファイルの名前が一貫して指定されていると確信している場合は、次のように少し単純化できます。

rename 's/^(..)\.(..)\.(..) (.*)\.mp3$/$4 20$3-$1-$2.mp3/' *

おすすめ記事