Se tudo o que você deseja fazer é suprimir a mensagem de aviso de ls , o mais direto a fazer seria redirecionar stderr para /dev/null , por exemplo:
Files=$(2>/dev/null ls -1 *.csv | wc -l)
Observe que redirecionar stderr suprimirá todos erros resultantes desse comando, incluindo erros que podem não estar relacionados à ausência de *.csv arquivos no diretório.
Uma solução melhor para a contagem de arquivos pode ser usar find em vez de ls , por exemplo:
find . -maxdepth 1 -name "*.csv" | wc -l
De fato, talvez você queira usar find para realizar a exclusão também:
find . -maxdepth 1 -name "*.csv" -delete
Também percebi que você usou o -r flag com rm , o que pode parecer não intencional, já que você está realizando uma pesquisa simples usando ls seguido por uma exclusão recursiva com rm . / p>
Francamente, não sei se faz muito sentido escrever um script para essa tarefa. Qual o benefício que esse script oferece ao executar os comandos diretamente? Em outras palavras, o que há de errado com isso:
# Check for files
ls *.csv
# Delete the files
rm *.csv
Por que executar seu script melhor do que executar esses comandos? Parece que você está apenas adicionando sobrecarga e substituindo uma mensagem de erro por outra.