フォルダ内のflacファイルを分析し、ビットレートが950kbps未満のすべてのファイルを削除します。

フォルダ内のflacファイルを分析し、ビットレートが950kbps未満のすべてのファイルを削除します。

私はフォルダ内のすべてのflacファイルを分析し、ビットレートが950kbps未満のすべてのファイルを削除する単純なシェルコマンドを探しています。 Clementineを起動し、フォルダを見つけてファイルを並べ替え、手動で削除する必要があります。それが私がClementineを使うすべてですが、ちょっと過度だと思います。ありがとう

ベストアンサー1

私が知っている限り、このようなことをする簡単なコマンドはありません。ただし、フォルダからファイルを検索する小さなスクリプトがこれを行うことができます。

まず、ファイルのビットレートを取得するにはコマンドラインユーティリティが必要です。使っていますmediainfoメディア情報Debianのパッケージ)。他のユーティリティはこれをうまく実行できます。インストール後、次のスクリプトはビットレートが950kbps未満のフォルダーにあるすべてのFLACファイルを一覧表示します。

#!/usr/bin/env sh

for flacfile in *.flac; do
    [ $(mediainfo "$flacfile" | grep 'Bit rate' | grep -oi '[0-9].[0-9]*' | sed 's/\s//g') -lt 950 ] && echo "$flacfile"                                                                                            
done

これがうまくいく場合は、コマンドをファイルの削除を続行するコマンドに置き換えてくださいechorm

#!/usr/bin/env sh

for flacfile in *.flac; do
    [ $(mediainfo "$flacfile" | grep 'Bit rate' | grep -oi '[0-9].[0-9]*' | sed 's/\s//g') -lt 950 ] && rm "$flacfile"                                                                                            
done

説明する

  • ディレクトリ内のforすべてのファイルを繰り返します。.flac
  • mediainfoFLACファイルに関するすべての情報を表示し、最初のgrepコマンドに提供します。
  • 最初はgrepビットレートの行を選択し、それを2番目の行に供給しますgrep
  • 2番目はgrepその行の数だけを選択します。ハンドルスペースには、千単位の区切り記号(例:in).[0-9].[0-9]*1␣050
  • sed必要に応じて、空白千単位の区切り文字を削除します。
  • 最後に、[ ... -lt 950 ]ビットレートが950kbps未満であることを確認し、その場合はrmファイルを削除するように指示します。

おすすめ記事