(( ... ))
no bash espera um valor aritmético. O 2018_04_10
é uma string e você recebe um erro. Use [[ ... ]]
para fazer uma comparação de string.
No entanto, com a data, aconselho a conversão para timestamp numérico date +%s
para compará-lo com (( ... ))
.
Você pode alterar seu script para:
yest=$(date -d "yesterday" '+%s')
for f in *[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9].csv; do
date=$(sed -r 's/.*([0-9]{4})_([0-9]{2})_([0-9]{2}).csv/--/' <<< $f | xargs date +%s -d)
(( $date < $yest )) && rm $f
done