Используя информацию из связанного ответа @ blm, вы можете сделать что-то вроде:
find /some/folder -type f -regextype posix-extended -regex '.*\.(flac|ape|wa?v|m(p3|4a))' -exec bash -c " file '{}' | grep '320 kbps'" \; -exec <do what you want>
первый -exec
будет искать только файлы со скоростью 320 кбит / с, так как команда file
сообщает нам об этом. Если grep
ничего не совпадает, то -exec
будет ложным, а второй -exec
не будет выполнен. Если grep
совпадает, тогда будет выполнен второй -exec
Для полноты этой функции -exec
можно найти на странице руководства
-exec command ;
Execute command; true if 0 status is returned
Редактировать:
Что касается использования file
в этом решении, он, кажется, не работает для всех. Итак, вот альтернативный способ получить битрейт с помощью mediainfo
:
#!/bin/bash
bitrate=$(mediainfo "$1" | grep -Ei 'overall bit ?rate.*[[:digit:]]+.*$' | grep -Eo [[:digit:]]+)
echo $bitrate
Вы можете сохранить его в файле .sh с разрешением на выполнение, после чего он выдаст вам битрейт файла (только цифры) в соответствии с общей информацией битрейта mediainfo
, который вы можете заменить
-exec bash -c " file '{}' | grep '320 kbps'" \;
с
-exec bash -c "BITRATE_SCRIPT_PATH '{}' | grep '320'" \;
(может плохо работать с аудиофайлами без потерь, скорость передачи которых составляет 1 Мбит / с +)