Jak porównać dwa drzewa źródłowe w Linuksie? [zamknięte]

Mam dwa katalogi zawierające pliki źródłowe do projektu, który odziedziczyłem z niewielką ilością dokumentacji. Jak porównać oba katalogi, aby zobaczyć, jakie są różnice. Dzięki.

 42
Author: Jonathan Leffler, 2009-04-22

5 answers

Możesz spróbować MELD : http://meld.sourceforge.net/ co jest wspaniałym wizualnym narzędziem diff; -)

 35
Author: manatlan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-22 12:01:27

Spróbuj tego:

diff -Naur dir1/ dir2/
  • Opcja -u sprawia, że wyjście trochę łatwiejsze do odczytania.
  • Opcja -r rekursuje wszystkie podkatalogi
  • Opcje -N i -a są naprawdę konieczne tylko wtedy, gdy chcesz stworzyć Plik z patchem.
 50
Author: jcrossley3,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-22 12:25:38
diff -u -r dirA dirB

Pokaże Ci zunifikowane rekurencyjne różnice pomiędzy Plikami w dirA i dirB

 25
Author: Bert Huijben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-22 14:37:32

Możesz użyć polecenia diff w powłoce. Lub zainstalować narzędzie jak kdiff3

 5
Author: Decio Lira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-22 12:01:45

Polecenie diff do porównywania katalogów mówiło mi, że nie mam różnic, kiedy wiedziałem, że są różnice.

Zamiast używać Diffa bezpośrednio, użyłem posortowanej listy sum MD5, a następnie porównałem te pliki z diffem:

find /path1/dir/ -type f -exec md5sum {} + | awk '{print $2 $1}' | sort >! path1.log
find /path2/dir/ -type f -exec md5sum {} + | awk '{print $2 $1}' | sort >! path2.log
gvimdiff path1.log path2.log

Jeśli początkowa część ścieżki powoduje bóle głowy, zmień ją. Wybierz Okno Path1 i wpisz:

:%s|path1|path2|g

To zastąpi wszystkie instancje path1 z path2 w pierwszym pliku, a teraz twój diff powinien tylko pokazywać różnice.

 1
Author: nikc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-21 17:17:17