次のファイルの名前を変更して、シーケンス番号を削除したいと思います。
01 X.mp3
からX.mp3
02 Add Me In.mp3
からAdd Me In.mp3
以下のrenameコマンドを試してみました。
rename -v -n 's/^\d+\s*([a-z]+\.mp3)$/$1\.mp3/' *.mp3
このコマンドを実行すると、次のエラーが発生します。
Using expression: sub { use feature ':5.18'; s/^\d+\s*([a-z]+\.mp3)$/$1\.mp3/ }
そのエラーが発生する理由がわかりません。実際、エラーにはあなたが示しているよりも多くの行があったと私は合理的に確信しています。一つには、実際のエラーメッセージはありません。
ただし、その正規表現は実際にはどちらのサンプルファイルとも一致しません。小文字のみに一致する[a-z]+\.mp3
を使用しており、拡張子まで完全に一致しているため、名前がのみ以下の小文字で構成されるファイルにのみ一致します。削除する数字とスペース。代わりに、[a-zA-Z]
を照合するか、s///i
を使用して大文字と小文字を区別しないようにすることもできますが、Wordの残りの部分とはまったく照合しないことをお勧めします。最初から数字と空白を削除したいだけなので、それらを一致させてください。
rename -vn 's/^\d+\s+//' *mp3
パラメータ拡張 を使用したソリューション
for i in *.mp3 ; do mv "$i" "${i#"${i%%[!0-9 ]*}"}" ; done
${i%%[!0-9 ]*}
は、最初の非数字/非スペース文字から最後まで削除します。${i#
に渡され、i
変数の先頭から削除され、数字とスペースを開始せずに目的のファイル名になります。-n
を削除すると、機能します。 -n
は、「結果を変更するのではなく、結果を出力するだけ」を意味します。