diff --git a/zfs/zfs-selective-destroy.sh b/zfs/zfs-selective-destroy.sh index 533d188..2991e76 100644 --- a/zfs/zfs-selective-destroy.sh +++ b/zfs/zfs-selective-destroy.sh @@ -1,14 +1,25 @@ #!/bin/bash set -euo pipefail -zfs-clean () { - if [ -z "$1" ]; then - exit 1 - elif [ "$1" == "upgrades" ]; then - if [ -z "$2" ]; then - zfs list -t snapshot | grep 'apt-' | sed 's| .*$||g' | head -n -5 | xargs -d '\n' -I {} sudo zfs destroy {} - else - zfs list -t snapshot | grep "${2}" | sed 's| .*$||g' | head -n -5 | xargs -d '\n' -I {} sudo zfs destroy {} - fi +clear-apt-snaps () { + zfs list -t snapshot | grep 'apt-' | sed 's| .*$||g' | head -n -5 | xargs -d '\n' -I {} sudo zfs destroy {} +} + +if [ -z "$1" ]; then + exit 1 +fi + +if ! [ -z "$1" ] && [ "$1" == "upgrades" ]; then + while getopts "r:" opt; do + case "$opt" in + r) REGEX=${OPTARG};; + *) exit 1;; + esac + done + + if [ -z "$REGEX" ]; then + clear-apt-snaps + else + zfs list -t snapshot | grep "${REGEX}" | sed 's| .*$||g' | head -n -5 | xargs -d '\n' -I {} sudo zfs destroy {} fi -} \ No newline at end of file +fi \ No newline at end of file