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

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

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

答え2

いいえrename:

for file in *.mp3
do
  no_extension=${file%.mp3}
  the_date=$(echo "${no_extension}" | cut -d ' ' -f 1)
  year=20${the_date:6}
  month=${the_date:0:2}
  day=${the_date:3:2}
  date_part=${year}-${month}-${day}
  dj_part=$(echo "${no_extension}" | cut -d ' ' -f 2-)
  new_file="${dj_part} ${date_part}.mp3"
  mv "${file}" "${new_file}"
done

説明する:

  • for file in *.mp3.mp3拡張子で終わる現在のディレクトリのすべてのファイルを繰り返します。
  • ${file%.mp3}.mp3以下を使用して、ファイルの末尾から拡張子を削除します。bash 文字列操作
  • $(echo ${no_extension} | cut -d ' ' -f 2-)cut文字で区切られた文字列を解析できるこのユーティリティを使用して、ファイル名の日付部分を抽出します。
  • 次に、部分文字列を抽出して日付形式を変更します。
  • "${dj_part} ${date_part}.mp3"私たちが作った部品を文字列で連結しただけです。
  • mv "${file}" "${new_file}"ファイル名の変更

答え3

ファイル名がまさにこのように指定されたとします。

for file in "*.mp3";do 
  date="${file:0:8}" #get the date in the filename. 
  dj="${file%.mp3}" #strip the extension off the filename. 
  dj="${dj:8}" # get dj name.
  mv -nv $file "$dj $date.mp3" # -n don't overwrite files. 
done

答え4

パイの名前を変更するGUIがあり、自動プレビューが可能です。
これを元のファイル名パターンフィールドに入力します。

{#}.{#}.{#} {X}.mp3

名前が変更されたファイル名モードに入ります。

{4} {3}-{1}-{2}.mp3

唯一の欠点は、「Windows」モード(1、10、11、2、3、4...)でソートされることです。

関連情報