Hello Dave,
The prune command will not prune volumes that hadn't its volume retention period expired (this means LastWritten+VolRetention < current datetime when the prune command is issued).
Therefore, If Bacula needs to a volume but there is no available volume (status=append) or it cannot create a new one in the pool or it cannot pick up one from the/a Scratch pool, *and* the "Autoprune = yes" ans "Recycle = yes" are configured for the pool resource, then a volume that has no more jobs/files associated to it can be eligible for recycling (this means that bacula will reuse the volume. The status=purged is temporary in this case only for the algorithm purposes). In this case, you can have the "Action on Purge = Truncate" configured in your pool definition, so bacula will truncate the volume before reusing it.
If you want to manually prune volumes that has no more jobs/files associated to it, I would recommend you to configure your Volume retention <= Job retention <= File retention. This way, you will be able to manually prune the volumes when jobs/files are pruned.
It is strongly recommended to use a manual/scheduled script for the prune task (an Admin Job can be used to regularly run this script). Also that this could be done when no jobs are running (you can do this in a by pool basis when the pool is not being used by any job).
If you want to use the prune command for the existing 50 volumes, make sure to prune the jobs (consequently the files will be pruned) before and that the retention period for these volumes had expired. If this is not the case, you can change the Volume retention value in the configuration file and update this new value to all the exiting volumes using the update command from bconsole. Then you will be able to manually prune them.
Hope this helps.
Best regards,
Ana