Возможно, я вас неправильно понял, но, похоже, вы работаете с оболочкой POSIX .
Вы можете сделать это с помощью awk
(gawk
). Поскольку каждый пустой каталог по умолчанию содержит только 2 файла (.
И ..
), вы можете использовать [ $(wc -l <<< $(ls -as $DIR)) -ne 2 ]
качестве условия пустоты папки.
$ find . -type d | awk '{print "[ $(wc -l <<< $(ls -a \"" $i "\")) -eq 2 ] && rm -rf \"" $0 "\""}'
Вот что я получаю из проверенного каталога:
[ $(wc -l <<< $(ls -a ".")) -eq 2 ] && rm -rf "."
[ $(wc -l <<< $(ls -a "./skda askd ()")) -eq 2 ] && rm -rf "./skda askd ()"
[ $(wc -l <<< $(ls -a "./skda askd () 2")) -eq 2 ] && rm -rf "./skda askd () 2"
Теперь все, что вам нужно сделать, это передать эти команды вашему интерпретатору. В моем тестовом каталоге это работало чисто.