Aqui está uma abordagem shell. Ele excluirá todos os diretórios que não contiverem .mp3
arquivos da taxa de bits > = 320 kbps:
find /path/to/Music -type d -print0 |
while IFS= read -r -d '' dir; do
mp3=$(find "$dir" -type f -iname '*.mp3' | head -n 1);
[ -e "$mp3" ] && [[ $(mp3info -x "$mp3" | grep -oP '\d+(?=\s*kbps)') -lt 320 ]] &&
rm -rf "$(dirname "$mp3")";
done
Notas
-
Isso removerá quaisquer diretórios que contiverem pelo menos um arquivo mp3 com uma taxa de bits menor que 320. Se houver outro arquivo no mesmo diretório com a taxa de bits correta, ele será excluído bem. Essa abordagem pressupõe que todos os arquivos em um diretório tenham a mesma taxa de bits.
-
Isso perderá arquivos de taxa de bits variável.
-
Ele deve funcionar com qualquer tipo de nome de arquivo, incluindo aqueles com espaços, novas linhas ou até barras invertidas.
-
Pode ser necessário instalar
mp3info
:sudo apt-get install mp3info
-
Execute-o em um diretório de teste primeiro.
Explicação
-
find /path/to/Music -type d -print0
: localize todos os diretórios em/path/to/Music
e imprima-os separados pela cadeia nula. Isso é necessário para lidar com nomes de arquivos estranhos. -
while IFS= read -r -d '' dir; do
: percorra cada um dos resultados defind
, salvando-os na variável$dir
. -
mp3=$(find "$dir" -type f -iname '*.mp3' | head -n 1);
: salve o nome do primeiro arquivo mp3 neste diretório como$mp3
. -
[ -e "$mp3" ]
: se este arquivo existir. Isso é necessário para ignorar diretórios sem arquivos mp3. -
[[ $(mp3info -x "$mp3" | grep -oP '\d+(?=\s*kbps)') -lt 320 ]]
: verifica a taxa de bits de$mp3
. Ele executamp3info
, grava a taxa de bits e verifica se é menor que320
. -
rm -rf "$(dirname "$mp3")";
: exclua o diretório que contém o arquivo mp3. Isso só será executado se a taxa de bits for menor que a desejada.