.MP3ファイルを含むディレクトリがあり、そのファイルの拡張子を.mp3に変更したいと思います。これを行う最も簡単な方法は何ですか?私の考えでは、おおよそ次のようになります。
find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/\1.mp3/ \;
…その言葉が正しくないことを私も知っているが。 :) 置換が間違っています。でamv
コマンドとaコマンドを使用する方法がわかりませんsed
。-exec
find
Bashスクリプトが必要ですか?
ベストアンサー1
Bashでこれを行う1つの方法は次のとおりです。
for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done
ここで使用するコマンドは、echo
ファイル名のペアを印刷する以外には何も行いません。そのリストが必要な変更を示している場合は、それに似たものに変更でき、echo
ファイルmv -i --
は移動されます(上書きする前にメッセージが表示されます)。
簡単な説明:
for
一致するすべてのファイルを繰り返します*
。その後、拡張子がすでに小文字であることを確認し、その場合は続行し、そうでない場合は移動し続けます(または場合によってはエコーします)。これはBashの組み込み文字列操作を使用し、ここで読むことができます。http://tldp.org/LDP/abs/html/string-manipulation.html