На днях пришлось анализировать два Sun Explorer-а, собранных с одного сервера с периодом в полгода. Так как ничего unix-ового под рукой не было, то попробовал с ходу найти программку, которая сравнивает 2 каталога и выводит отсутствующие файлы и сообственно различия. Вот… сходу бесплатных утилит не нашлось, пришлось написать на perl. Итак, скрипт, который

    находит файлы, отсутствующие во втором каталоге
    находит файлы, отличающиеся по дате модификации и размеру
    находит файлы, отличающиеся по содержанию

Так как написан на perl, то под Windows требует установленного perl (ActivePerl, например) или можно скачать скомпилированный бинарник.


В STDERR выводит сообщения о наличии и отсутствии файлов.

В STDOUT выводит список различий в контенте файлов.

Пример использования:
C:> comparedirs.pl -content
-d1=c:/explorer.8eeeeee.e25k-2008.05.28.17.56
-d2=c:/explorer.8eeeeee.e25k-2009.01.20.11.24 > c:/tmp/diff.log 2> c:/tmp/messages.log

C:\TEMP>perl comparedirs.pl -d1=c:/temp/2 -d2=c:\temp\1
File C:\temp\1\ndd\udp\aaa do not exist!

C:\TEMP>perl comparedirs.pl -content -d1=c:/temp/2/ndd/ce.6 -d2=c:\temp\1\ndd\ce.6
Files C:\temp\2\ndd\ce.6\accept_jumbo.out and C:\temp\1\ndd\ce.6\accept_jumbo.out have different con
tent
*** C:\temp\2\ndd\ce.6\accept_jumbo.out Wed Feb 18 03:51:32 2009
— C:\temp\1\ndd\ce.6\accept_jumbo.out Wed May 28 21:06:31 2008
***************
*** 1 ****
! 0
— 1 —-
! 1

Загрузить скрипт (исходный код)/Download source comparedirs

Загрузить исполняемый файл под Win32/ Download binary for Win32

PS аналог на shell примерно такой:
cd /dir1;
for p in `find . -print`; do
if -f /dir1/$p && -f /dir2/$p; then
diff /dir1/$p /dir2/$p
fi
done

PSPS 02.03.2009 — Добавил бинарник под windows

Обсуждение закрыто.