Um pouco de bash (usando todas as práticas recomendadas!) :
shopt -s nullglob
for f in *.js; do
coffee=${f%.js}.coffee
[[ -f $coffee ]] && rm -v -- "$f"
done
-
nullglob
é um comportamento opcional do shell para que*.js
seja expanda para a string vazia se não houver arquivos com extensãojs
. - Use expansão de parâmetros do shell para remover a extensão
.js
e substitua-o por.coffee
na variávelcoffee
. -
rm
é usado com a opção-v
(verbose) para que você veja o que está acontecendo. -
rm
também é usado com--
que marca o final das opções, caso haja um arquivo que comece com um hífen: nesse caso,rm
seria confuso e tentaria interpretar uma opção. - A construção
[[ ... ]]
é uma construção condicional e usa expressões condicionais . Observe que estou usando o colchete duplo robusto[[
e não o único[
. Prática muito boa (em bash ). - Note que a citação é perfeita. É 100% seguro em relação a arquivos com espaços ou símbolos engraçados em seu nome.
Para fins de teste, você deve colocar echo
na frente de rm
:
[[ -f $coffee ]] && echo rm -v -- "$f"
para que apenas ecoa o comando e não remova nada. Quando você estiver feliz com isso, remova o echo
.
Aproveite!