Você provavelmente quis dizer
dirs_to_check="$(echo "$changed_files" | xargs dirname | sort -u)"
Uma solução simples, a menos que você tenha milhares de diretórios, é simplesmente tentar rmdir
de cada diretório e ignorar os erros.
find . -depth -type d -exec echo rmdir --ignore-fail-on-non-empty {} +
Altere .
para o topo dos diretórios em questão. Se o seu rmdir não tiver a opção de ignorar, apenas redirecione 2>/dev/null
para não ter os avisos.