id3v2はコマンドラインで再帰的に使用されますか?

id3v2はコマンドラインで再帰的に使用されますか?

id3タグをクリーンアップしようとしていますが、コマンドラインでid3v2を使用したいと思います。しかし、*.mp3はワイルドカードと一緒にしか使われていませんでした。私のMP3。再帰的に使用できるオプションはないようです。

あなたの素晴らしいコマンドラインの人々は皆、これを行う良い方法を知っていると確信しています。しかし、私はまだコツを学んでいます...

無差別代入用に設定したaliasコマンドは次のとおりです。

id3v2 --remove-frame "COMM" *.mp3
id3v2 --remove-frame "PRIV" *.mp3
id3v2 -s *.mp3

それでは、音楽フォルダのルートで実行できるようにこの操作を再帰的に実行する方法はありますか?要点は、異なるオーディオファイル形式を含み、上記の3つのコマンドをすべて1つのuberコマンドに縮小することです。 (;その間にあるコマンドを使ってこれを行うことができます...そうですか?)

ベストアンサー1

次のように1行でこれを行うことができます。

find . -name '*.mp3' -execdir id3v2 --remove-frame "COMM" '{}' \; -execdir id3v2 --remove-frame "PRIV" '{}' \; -execdir id3v2 -s '{}' \;

{} は現在のファイル名の一致を置き換えます。引用符()で囲み、''シェルから保護します。セミコロンが表示されるまで実行されますが、-execdirセミコロン(;)をシェルからエスケープする必要があるため、バックスラッシュ(\)が使用されます。すべてそこにいるfind マンページ:

-exec command ;
      Execute  command;  true  if 0 status is returned.  All following
      arguments to find are taken to be arguments to the command until
      an  argument  consisting of `;' is encountered.  The string `{}'
      is replaced by the current file name being processed  everywhere
      it occurs in the arguments to the command, not just in arguments
      where it is alone, as in some versions of find. 
-execdir command {} +
      Like -exec, but the specified command is run from the  subdirec‐
      tory  containing  the  matched  file,  which is not normally the
      directory in which you started find.  This a  much  more  secure
      method  for invoking commands...

あなたはこれについて少し新しいように聞こえるので、注意すべきこと:常に複雑なシェルコマンドを使用している場合と同様に、注意して実行し、何が起こるのかを確実に理解するために、まずテストディレクトリで実行してみてください。権利があれば大きな責任も与えられます!

おすすめ記事