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

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

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

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

これにより、ファイル名の先頭に2桁の数字があるすべてのMP3ファイルの名前が変更され、数字の後にスペース、ダッシュ、スペースが挿入されます。つまり01 Track name.mp301 - Track name.mp3

あなた自身の試みから判断すると、すべてのファイル名は数字のゼロで始まり、ダッシュを挿入したいようです。直接数字の後にスペースを入れます:

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

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

答え4

消去コマンドは2つ(3つ)あります。1つはユーティリティLinuxすべての非組み込みLinuxシステムにインストールされているパッケージと、Perlベースのパッケージ(実際には2つのバリエーション)があります。プレネーム、名前変更、ファイル名変更など、すべての名前変更とは何ですか?

util-linux コマンドは非常に基本的なものですが、必要な操作を実行できる稀な状況です。最初のスペースをスペース-ダッシュ-スペースに置き換えます。

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

関連情報