
.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
答え2
zshから:
autoload zmv
zmv '(*).MP3' '$1.mp3' # rename files in the current directory only
zmv '(**/)(*).MP3' '$1$2.mp3' # rename files in subdirectories as well
また、次の点に注意するか、.Mp3
ファイルを送信してください.mP3
。
zmv '(**/)(*).(#i)mp3' '$1$2.mp3'
答え3
使用できる名前を変更するコマンドを実行します(他のAPIを使用する2つの主要な実装があることに注意してください)。たとえば、ファイル拡張子の大文字と小文字を大文字から小文字に変更するには、次のようにします。
ファイル名で一度だけ発生すると仮定されるfrom(時々)の
rename
使用util-linux
rename.ul
.JPG
rename -- .JPG .jpg *.JPG
rename
fromを使用するとperl
(時々とも呼ばれ、いくつかのバリエーションprename
が公開されました):rename 's/\.JPG$/.jpg/' ./*.JPG
ここにいくつかありますみんなチュートリアル厄介なbashスクリプトからあなたのユースケースに合わせて簡単なコマンドに切り替えた方法について説明します。
これを行うもう一つの素晴らしいコマンドは次のとおりです。pax
。シェルがZSHを使用している場合zmv
。
答え4
Linuxでは、「拡張子」は実際にはファイル名文字列の一部であるため、スクリプトが必要です。新しい名前を取得するには、スクリプトでいくつかの文字列操作を実行する必要があります。
#!/bin/bash
for NAME in *.JPG
do
PREFIX=${NAME%.*}
NEWNAME="$PREFIX.jpg"
mv "$NAME" "$NEWNAME"
done
ファイル名にスペースが含まれている場合は、二重引用符が重要です。二重引用符の一部が少し不明瞭だと思います。