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.