Próbuję znaleźć diff
s między wszystkimi plikami o tych samych nazwach w dwóch kopiach katalogu (powiedzmy działającą i kopię zapasową). Na przykład mogę w diff
obu plikach o tej samej nazwie:
> diff d1/f.cpp d2/f.cpp
lub mogę znaleźć różnice między katalogami:
> diff d1 d2
ale jak mogę znaleźć różnice tylko między *.cpp
plikami?
> diff d1/*.cpp d2/*.cpp
wydaje się nie działać (z oczywistych powodów).
[Prawdopodobnie łatwo go rozwiązać za pomocą pętli, ale staram się znaleźć bardziej elegancki sposób]
echo "${file##*/}";
przeddiff
poleceniem, więc wiadomo, jakie pliki są faktycznie porównywane. Ponadto, jak wspomniano w odpowiedzi @ Rinzwind, ta metoda nie obejmuje przypadku, w którym lista plików nie jest dokładnie taka sama w obu katalogach.diff -qr {DIR1} {DIR2}
wykonuje wszystkie pliki w obu katalogach.q
pokazuje tylko różnicer
rekurencyjne. Zostaw to, jeśli nie jest to potrzebneNie możesz powiedzieć
diff
bezpośrednio, aby używać symboli wieloznacznych, ale możesz dodać:wykluczać pliki. Więc jeśli chcesz tylko
*.cpp
najłatwiejszą metodą jest utworzenie pliku tekstowego, który zawiera listę wszystkich plików, które nie są*.cpp
. Możesz to zrobić za pomocą następującego polecenia:ls -I "*.cpp" > excluded_files
gdzie-I "*.cpp"
argument ignoruje wszystkie pliki .cpp. Pamiętaj, że znaki cudzysłowu są konieczne.źródło
Jakiś czas po zadaniu pytania dowiedziałem się o
meld
narzędziu diff i od tego czasu go używam. To świetny program oparty na GUI, który sprawia, że porównywanie i łączenie plików i katalogów jest bardzo łatwym zadaniem. Porównuje dwu- lub trójdrożnie.W szczególności odpowiada na moje pierwotne pytanie, ponieważ pokazuje kolorowe porównanie zawartości katalogu i pozwala porównać określone pliki poprzez dwukrotne kliknięcie nazwy pliku.
Jeśli ktoś potrzebuje więcej niż trójstronnego porównania, to
gvimdiff
(w oparciu ovim
edytor) również jest świetny, który zapewnia tę funkcjonalność.źródło
Jest na to lekkie rozwiązanie:
diff dir1 dir2 | vim -R -
w muszliDodanie foldów i porównanie obok siebie dla zmienionych plików.
źródło