Primeiramente, sugiro que você coloque as variáveis $FILES e $DESTINATION no comando unzip entre aspas duplas, já que no caso de caminhos que contenham espaços eles quebrarão o comando unzip ; Note também que o seu script irá quebrar em nomes de arquivos contendo novas linhas, devido a ls produzir os nomes de arquivos "brutos" contendo as novas linhas para o pipe; use o recurso globbing de bash ( for FILES in /path/to/archives/* [...] ).
Segundo, quando você não executa unzip com a opção -q , que suprime a saída normal, a saída é gravada em stdout (STDandard OUTput), que é um arquivo tipicamente vinculado à tela do terminal ; shells como bash podem redirecionar a saída de um comando de stdout para outro arquivo: por exemplo, em bash , isso pode ser feito por meio dos operadores > e >> , que respectivamente 1. Cria o arquivo se não existir ou truncar, em seguida, anexa a saída a ele e 2. Cria o arquivo, se não existente, ou anexa a saída a ele.
Portanto, nesse caso, como você está processando vários arquivos, não deseja truncar o arquivo de registro toda vez que um novo arquivo é processado, mas prefere anexar a nova saída ao log existente; incluindo minhas correções:
for FILES in /path/to/archives/*
do
unzip -v "$FILES" -d "$DESTINATION" >> /path/to/logfile
done