drford
@drford
Прокрастинирую с 1993 года

Как удалить разницу между двумя директориями?

Есть 2 директории: dir1 и dir2. Как можно рекурсивно удалить из директории dir2 все поддиректории и файлы, которых нет в директории dir1 ?
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
Может, rsync поможет?
rsync \
  -av \
  --delete \
  --existing \
  dir1 dir2
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vitaly_il1
DevOps Consulting
diff -r dir1/ dir2/ |grep Only | sed -e 's/^.*Only in //' -e 's@: @/@' | xargs rm

Upd: но ответ Сергей Соколов конечно красивее
Ответ написан
fzfx
@fzfx
18,5 дм
dir1=/path/to/dir1 dir2=/path/to/dir2; cd $dir2; for i in $(find . -mindepth 1 -type d -or -type f | tac); do if [[ ! -f $dir1/$i && ! -d $dir1/$i ]]; then if [[ -f $i ]]; then rm -f $i; elif [[ -d $i ]]; then rmdir $i; fi; fi; done
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы