複数の日付に対してこのスタイルで名前が付けられたファイルがあり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/' *