Я взял этот скрипт https://www.linuxquestions.org/questions/linux-newbie-8/finding-corrupt-mp3s-in-library-632053/, который, кажется, изначально отлично работает, и изменил его на этот, чтобы вывести список дорожек ниже 320 кбит / с, но я получил неожиданную ошибку конца файла.Кажется, что одни только команды работают нормально.
find . -maxdepth 1 -iname '*.mp3' -exec sh -c 'curfname="{}";\
bitrate=`mp3info -r a -p "%f %r\n" "$curfname" | awk 'NF>1{print $NF}'`;\
if [ $bitrate -lt 320 ];\
then \
echo $curfname has $bitrate bitrate; \
fi ' \; | tee ./lowbitrate.log
Может ли какая-нибудь полезная душа указать, где я неправ?
Редактировать:
Это то, что я получаю
~/bin/mp3bitrate.sh ~/Music
}`;\
if [ $bitrate -lt 320 ];\
then \
echo $curfname has $bitrate bitrate; \
fi : -c: line 1: unexpected EOF while looking for matching ``'
}`;\
if [ $bitrate -lt 320 ];\
then \
echo $curfname has $bitrate bitrate; \
fi : -c: line 2: syntax error: unexpected end of file
}`;\
if [ $bitrate -lt 320 ];\
then \
echo $curfname has $bitrate bitrate; \
fi : -c: line 1: unexpected EOF while looking for matching ``'
}`;\
if [ $bitrate -lt 320 ];\
then \
echo $curfname has $bitrate bitrate; \
fi : -c: line 2: syntax error: unexpected end of file
}`;\
if [ $bitrate -lt 320 ];\
then \
echo $curfname has $bitrate bitrate; \
fi : -c: line 1: unexpected EOF while looking for matching ``'
}`;\
if [ $bitrate -lt 320 ];\
then \
echo $curfname has $bitrate bitrate; \
fi : -c: line 2: syntax error: unexpected end of file
Хорошо, я изменил вторую строку на:
bitrate=`mp3info -r a -p "%r\n" "$curfname"`;\
, так что awk не нужен, поскольку это вызывает проблемы.Но теперь у меня есть сравнение с плавающей запятой и целым числом, меняя оператор if с помощью
if [ $(echo "$bitrate < 320" | bc ) -e 1 ]
, возвращает: строка 2: [: -e: ожидается двоичный оператор
, но выполняется только командапохоже на работу:
echo "234.54444444 <320" |bc </p>
возвращает 1, что сейчас не так, мне интересно!