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
-fpararm. Nesse caso, falharia se a pastaserver.log backupsestivesse vazia, porque a glob não seria expandida e transmitida literalmente, e não haveria nenhum arquivo chamadoserver.log backups/*. -
Você poderia simplesmente
rm -rfa pasta inteira emkdir -pdepois. -
Você também pode simplesmente fazer uma exclusão em profundidade de todos os arquivos e pastas dentro da pasta
server.log backups.-mindepth 1impede que o pai seja excluído:find "$MINECRAFT_PATH/server.log backups" -mindepth 1 -depth -delete