Это должно быть довольно просто, но я не уверен, что мне не хватает.
Я бы хотел рекурсивно удалить пустые каталоги и получить вывод о том, что удаляется, эта команда точно работает, но я просто не могу подробно распечатать действия -excec.
while [ -n "$(find . -depth -type d -empty -exec rm -v -rf {} +)" ]; do :; done
по рекурсивно Я имею в виду, что я хочу продолжать удалять пустые папки, пока не останется другой пустой папки.
$ tree .
.
├── empty
│ └── empty
│ └── empty
└── non-emty
└── ko
этот элемент удалит только одну пустую папку в дереве
$ find . -depth -type d -empty -exec rmdir -v {} +
rmdir: removing directory, `./empty/empty'
Вам не нужен цикл while, и вы должны использовать rmdir -p для удаления пустых родителей
find . -depth -type d -empty -exec rmdir -v -p {} +
rmdir: removing directory, `./1/3'
rmdir: removing directory, `./1'
rmdir: removing directory, `.'
rmdir: failed to remove directory `.': Invalid argument
rmdir: removing directory, `./2/3'
rmdir: removing directory, `./2'
rmdir: failed to remove directory `./2': Directory not empty
Причина, по которой вы не видите вывод своей команды, заключается в том, что вы запускаете ее в подоболочке $(...)
но ничего не делая с возвращенным выводом, вы можете поместить эхо перед подзапросом, чтобы распечатать то, что он возвращает
echo $(find . -depth -type d -empty -exec rmdir -v -p {} +)
rmdir: removing directory, `./1/3' rmdir: removing directory, `./1' rmdir: removing directory, `.' rmdir: removing directory, `./2/3' rmdir: removing directory, `./2'