Использование не -GNU find
(, но все же некоторой реализации, поддерживающей -mindepth
, например find
в системах BSD):
find top-dir -depth -mindepth 1 -type d -exec sh -c '
for pathname do
subdir=$pathname/${pathname##*/}
if [ -d "$subdir" ]; then
printf "Would remove directory %s\n" "$subdir"
# rm -rfi "$subdir"
fi
done' sh {} +
Это будет выполнять первый -обход в глубину иерархии каталогов с корнем top-dir
. Для пакетов найденных путей к каталогам будет вызываться короткий сценарий оболочки. В каждой итерации цикла в коротком сценарии оболочки создается путь к подкаталогу в каталоге $pathname
, который имеет то же имя, что и сам каталог. Если этот подкаталог существует, сообщается (, что удаление в настоящее время закомментировано для безопасности ).
Опция -depth
вызывает -первый обход в глубину. Обычно это то, что вам нужно, когда вы удаляете каталоги с помощью find
, поскольку в противном случае find
потенциально попытается войти в каталоги, которые вы уже удалили.
Параметр -mindepth 1
гарантирует, что верхний каталог не будет удален, как если бы вы использовали .
в качестве начального пути поиска.
Связанные:
Эй, не уверен, что это все еще имеет значение, но вы просто забыли добавить [normal]
после карты. У меня есть это в моей конфигурации, и это работает:
map [normal] n search forward
map [normal] p search backward
Теперь я все еще пытаюсь понять, как отвязать \ при поиске и замене.