我有一个非常小的脚本,有人在这里帮助我。它删除所有小于1000比特的轨道。在linux下工作得很好。在freebsd和macos下也可以工作,但是会输出很多错误消息,在sed部分显示太多参数,这很烦人。有人能帮我把这个转换成在freebsd/macos下工作吗?谢谢你
for flacfile in *.flac; do
[ $(mediainfo "$flacfile" | grep 'Bit rate' | grep -oi '[0-9].[0-9]*'
| sed 's/s//g') -lt 1000 ] && rm "$flacfile" $
done
错误消息
/usr/local/bin/flac-remove: command substitution: line 6: syntax error near unexpected token `|'
/usr/local/bin/flac-remove: command substitution: line 6: `| sed 's/s//g''
建议1
使用[[
]]
对bash
进行数值测试
for flacfile in *.flac; do
[[ $(mediainfo "$flacfile" | grep 'Bit rate' | grep -oi '[0-9].[0-9]*'
| sed 's/s//g') -lt 1000 ]] && rm "$flacfile" $
done
建议2
用单个awk
命令替换grep 'Bit rate' | grep -oi '[0-9].[0-9]*' | sed 's/s//g'
awk '/Bit rate/ && /[0-9].[0-9]*/{gsub("[[:space:]]","");print}'
:
for flacfile in *.flac; do
[[ $(mediainfo "$flacfile" | awk '/Bit rate/ && /[0-9].[0-9]*/{gsub("[[:space:]]","");print}') -lt 1000 ]] && rm "$flacfile" $
done