renameコマンドを使用してこれらのファイル名を変更するにはどうすればよいですか?

renameコマンドを使用してこれらのファイル名を変更するにはどうすればよいですか?

次のファイルを変更しようとしています。

01 Track name.mp3

入力する

01 - Track name.mp3

これまで私の無駄な試みは

rename '0. ' '$&- ' *.mp3
rename 's/0. /$&- /' *.mp3
rename '/0. /' '/$&- /' *.mp3
rename 's/0.\ /$&-\ /' *.mp3
rename 's/0.\ /$1-\ /' *.mp3

答え1

Perlrenameコマンドを想定します。

最後のコマンドに非常に近いです。rename 's/(0.) /$1 - /' *.mp3動作します。スペースをエスケープする必要はなく、正規表現では特別な意味がなく(ファイル名には特別な意味はありますが、ここでは重要ではありません)、再使用したい部分の周りに括弧が必要です。

答え2

コマンドを使用する必要がありますかrename

$ ls
01 Track name.mp3  02 Track name.mp3  03 Track name.mp3

$ for a in *.mp3
> do
> mv -i "$a" "${a%% *} - ${a#* }"
> done

$ ls
01 - Track name.mp3  02 - Track name.mp3  03 - Track name.mp3

答え3

$ rename 's/^(\d\d)\s*/$1 - /' *.mp3

これにより、すべてのMP3ファイルの名前がファイル名の先頭に2桁の数字に変わり、数字の後にスペース - ダッシュ - スペースが挿入されます。だから01 Track name.mp3それはなります01 - Track name.mp3

自分で試した結果、すべてのファイル名は数字0で始まり、ダッシュを挿入したいようです。まっすぐ数字の後にスペースが続きます。

$ rename 's/^(0\d)\s*/$1- /' *.mp3

01 Track name.mp3に変換されます01- Track name.mp3

答え4

2つ(3つ)の消去コマンドがあります。一つはユーティリティLinuxすべての非組み込みLinuxシステムにはソフトウェアパッケージがインストールされており、そのうちの1つ(実際には2つのバリエーション)がPerlに基づいています。バラより名前変更、名前変更、ファイル名変更など、すべての名前変更はどういう意味ですか?

util-linuxコマンドは非常に基本的ですが、まれに必要な操作を実行できます。最初のスペースを space-dash-space に置き換えます。

rename ' ' ' - ' [0-9][0-9]\ [^-]*

関連情報