複数の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
、 などの潜在的に破壊的なコマンドのループを処理するときにこれを行うのはおそらく良い考えです)。mv
cp
rm
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 パターンです。