ファイル名操作にbashシェルパラメータ拡張を使用する方法

ファイル名操作にbashシェルパラメータ拡張を使用する方法

同じディレクトリにあるMP3リストの名前を変更したいと思います。たとえば、次のようになります。

001 - toto1.mp3
002 - toto3.mp3
003 - toto5.mp3
004 - toto7.mp3
005 - toto9.mp3
toto10.mp3
toto35.mp3
toto59.mp3
toto75.mp3

次のコマンド例を試しました。

for i in *.mp3 ; do echo "${/[0-9]-/i}" ; done 

私は持っています

bash: ${/[0-9]-/i}: bad substitution

私はこの結果が欲しい:

toto1.mp3
toto3.mp3
toto5.mp3
toto7.mp3
toto9.mp3
toto10.mp3
toto35.mp3
toto59.mp3
toto75.mp3

ありがとう

ベストアンサー1

iループ内の各ファイル名に変数を設定しましたが、パラメータ拡張${;すぐ後ろに変数名が表示されることを期待するのではなく、最後に閉じる中括弧の直前に変数名を入力します。

ファイル名の前のテキストのみを削除するには、次の構文を使用します。

for i in *.mp3 ; do echo "${i#[0-9][0-9][0-9] - }" ; done 

これにより、3つが削除されます。リーダー数字の後にスペースダッシュスペースが続きます。

おすすめ記事