次のようなファイルを変更しようとしています
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.mp3
、01 - 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]\ [^-]*