У меня есть два больших дерева каталогов - подумайте о годах работы с клиентами в агентстве. Один старый и устаревший; другой больше и используется в настоящее время. Я хотел бы удалить первый, но я хочу быть уверен, что последний действительно является его надмножеством (я подозреваю, что первый - это старый архив или раннее издание последнего, которое было небрежно скопировано и никогда не удалялось).
Использование diff в его обычной конфигурации приведет к слишком большому объему вывода, потому что это расскажет мне обо всех различиях между двумя деревьями каталогов. Что я хотел бы знать, так это то, какую команду я мог бы запустить, чтобы узнать, какие файлы (если есть) находятся в меньшем старом дереве, которые также недоступны в более крупном и новом дереве.
Кстати, я запускаю cygwin в Windows - не уверен, что это важно. Если кто-то предложит вместо этого использовать утилиту Windows, это тоже нормально.
Вне всякого сравнения буквально вне всякого сравнения для такого рода задач. Это упрощает сравнение каталогов. Он покажет вам файлы в представлении, где вы можете затем выбрать их и скопировать в другое место или в новое дерево.
Если ваш набор данных такой, как вы подозреваете, он просто покажет пустой вид на старой стороне, и вы знаете, что вам ничего не нужно делать.
olddir$ for file in $(find -type f); do [ -e $NEWDIR/$file ] || echo "$file is missing in NEWDIR"; done
Робокопия это то, что вы хотите для утилиты Windows.
robocopy.exe <your old dir tree> <your new dir tree> /COPYALL /L
Вы можете добавить другие параметры, но убедитесь, что / L присутствует, или он фактически объединит два дерева, а не просто сравнивает различия.