Aspas duplas no Bash preservam a maioria dos valores literais do conteúdo, então o *
glob é passado literalmente para rm
, que tentará remover um arquivo ou pasta chamado *
. O $MINECRAFT_PATH
é substituído embora.
O que você provavelmente quer é:
rm -rf "$MINECRAFT_PATH/server.log backups/"*
Isso excluirá o conteúdo da pasta server.log backups
.
Algumas alternativas:
-
Você poderia programar seu script mais defensivamente, removendo assim a opção
-f
pararm
. Nesse caso, falharia se a pastaserver.log backups
estivesse vazia, porque a glob não seria expandida e transmitida literalmente, e não haveria nenhum arquivo chamadoserver.log backups/*
. -
Você poderia simplesmente
rm -rf
a pasta inteira emkdir -p
depois. -
Você também pode simplesmente fazer uma exclusão em profundidade de todos os arquivos e pastas dentro da pasta
server.log backups
.-mindepth 1
impede que o pai seja excluído:find "$MINECRAFT_PATH/server.log backups" -mindepth 1 -depth -delete