Вы можете использовать следующий скрипт, используяfind
for topdir in./*/; do
[ -z "$(find "$topdir" -type d -name bar -print -quit)" ] &&
echo "$topdir"
done
Часть -print -quit
— это просто оптимизация для выхода после нахождения каталога bar/
sub -. Если ваша версия find
не поддерживает -quit
, вы можете просто удалить эту часть. Команда по-прежнему будет работать, но может быть немного медленнее.
или этот чистый bash
сценарий
shopt -s globstar
for topdir in./*/; do
(cd "$topdir" && compgen -G '**/bar/' > /dev/null) ||
echo "$topdir"
done
Если вы довольны результатами, замените echo "$topdir"
на rm -r "$topdir"
, чтобы удалить каталоги.
Оба подхода могут работать с произвольными именами файлов/каталогов, даже с разрывами строк или специальными символами, такими как *
.
После публикации здесь я попытался установить «networkmanager -openconnect» и настроить VPN в настройках сети (с помощью того же сценария CSD ), и это сработало.