Porównywanie zawartości plików i katalogów

Damian Stelmach

Podstawowe polecenia związane z plikami i katalogami mamy już omówione. Przejdźmy teraz do poleceń zdecydowanie ciekawszych i bardzo przydatnych. Pierwszym z nich będzie diff, którego zadaniem jest porównywanie zawartości plików oraz katalogów.

Jestem przekonany, że co do użyteczności takiego narzędzia nikogo nie potrzeba przekonywać, wystarczy wyobrazić sobie sytuacje kiedy mamy dwa, podobnie wyglądające pliki z jedną, może kilkoma drobnymi różnicami, które musimy wychwycić. Bez narzędzia porównującego dane zawarte w plikach lub katalogach niejednokrotnie zadanie takie może okazać się bardzo czasochłonne. Mnie osobiście bardzo ostatnio przydał się ten sofcik, bo musiałem przekopiować wiele tysięcy plików z jednej lokalizacji do drugiej, a potem zweryfikować czy aby na pewno wszystko o się przekopiowało i wówczas diif okazał się zbawienny, bo okazało się, że kilka istotnych plików nie zostało przekopiowanych. Działanie programu pokażę na nieco mniejszym plikowo przykładzie, plików nie będzie kilka tysięcy, ale to nie ma znaczenia. Na dysku mam dwa katalogi wraz z podkatalogami i plikami:

diff

Już na pierwszy rzut oka widać, że nieco się od siebi różną. Dzięki programowi diff i takiemu poleceniu:

diff -r dokumenty/ kopia_dokumenty/

Można sprawdić jakie pliki zapisane są tylko w jednym katalogu:

Only in dokumenty/2018/faktury: faktura3_2018.txt
Only in dokumenty/2018/faktury: faktura4_2018.txt

Diff doskonale sprawdzi się również w sytuacji, kiedy chcemy porównać zawartość dwóch plików. Załóżmy, że w jednym pliku mamy zapisany taki tekst:

test
test
test

a w drugim taki:

test
test
test1

Niby podobne, ale jednak subtelna różnica jest. Wykonanie takiego polecenia:

diff plik1 plik2

da nam taki wynik:

3c3
< test
---
> test1

a dzięki temu dowiemy się, że w pierwszym pliku, w linii 3 mamy słowo test, a w pliku drugim w trzeciej linii słowo test1