Удалите все пустые папки, даже с .svn папками в нем

Я пытаюсь удалить все пустые папки в рамках каталога. Однако find . -type f -empty ничего не находит, потому что каждая папка содержит скрытое .svn папка.

Как я могу работать вокруг этого?

6
задан 29.04.2011, 20:00

2 ответа

Если Вы можете, Вы можете от курса сначала удалять все .svn папки. Оборотная сторона: Вы потеряете информацию об управлении версиями, если кто-то будет использовать SVN. Если кто-то использует SVN, то это не хорошая идея просто удалить те папки (или на самом деле необходимо удалить тех, которые от SVN также, поскольку SVN отслеживает папки и файлы).

Если бы это не возможно, я пошел бы со сценариями маршрута:

for folder in $(find . -type d); do
 if [ "`ls $folder | wc -l`" -eq 0 ]; then
  echo "I am going to delete $folder"
 fi
done

Сначала попробуйте тестовый прогон, потому что могло бы быть что-то удивление. Затем можно измениться rm -r вместо этого echo.

Отметьте однако, это удалит все папки только с точечными файлами (так, например, a/.this_is_super_important будет удален, если не будет никаких других файлов или папок).

1
ответ дан 07.12.2019, 16:09

Я просто наткнулся на это, и я использовал этот сценарий, но изменил его для надлежащего рассмотрения пустых директоров только теми с .svn и никаким другим файлом, скрытым или нормальным.

Кроме того, примите во внимание, что я использую svn комнату, таким образом, это, предполагают для работы против репозитория, Вы могли адаптировать сценарий, чтобы сделать что-то другое на каталоге.

for folder in $(find -type d ! -path *.svn*); do
  if [ "`find $folder ! -path *.svn* ! -path $folder | wc -l`" -eq 0 ]; then
    svn rm $folder
  fi
done
2
ответ дан 07.12.2019, 16:09

Теги

Похожие вопросы