ファイル名の末尾、拡張子の前にテキストを追加します。

ファイル名の末尾、拡張子の前にテキストを追加します。

複数のmp3があり、拡張子の前に「_p192」を追加する必要があります。

私はこれを試しました:

for f in *.mp3; do printf '%s\n' "${f%.mp3}_p192.mp3"; done

この記事に続いて:

ファイル名拡張子の前にテキストを追加する

ただし、実際にはファイル名を変更せずにファイル名を標準出力に出力します。

答え1

あなたが見ている答えは、実際にディスク上のファイルの名前を変更する必要はなく、端末に報告されているファイル名を変換するだけの質問です。

これはあなたの解決策が機能することを意味します。もしmv代わりに、対応するコマンドを使用しますprintf(単に文字列を端末に印刷します)。

for f in *.mp3; do mv -- "$f" "${f%.mp3}_p192.mp3"; done

printf名前が期待どおりに変換されたことを確認するには、まずループを実行することをお勧めします。

echo通常、何が実行されるのかを確認するために前に挿入するのが安全です(mv、 などの潜在的に破壊的なコマンドのループを処理するときにこれを行うのはおそらく良い考えです)。mvcprm

for f in *.mp3; do echo mv -- "$f" "${f%.mp3}_p192.mp3"; done

またはより良い形式を使用してください。

for f in *.mp3; do
    echo mv -- "$f" "${f%.mp3}_p192.mp3"
done

答え2

あなたはそれを使用することができます名前変更コマンド。たとえば、ファイル拡張子の前に「_p192」というテキストを追加するには、次のようにします。rename -n 's/(.*)\.mp3/$1_p192.mp3/' *.mp3.

上記のコマンドは、現在のディレクトリの.mp3拡張子を持つすべてのファイルの名前を変更します。このコマンドは、名前が変更されたファイルのみをコンソールに印刷します。実際にファイル名を変更するには、-n フラグを削除します。

's'修飾子は置換を表します。置換の最初の部分は、ファイル名のテキストを一致させるために使用される正規表現です。 2番目の部分は代替テキストです。 rename コマンドの最後の引数は、名前を変更するファイルを表す glob パターンです。

関連情報