Czy istnieją narzędzia dla systemu Linux / Unix, w których wszystkie pliki w jednym katalogu nie występują w innym? Zasadniczo szukam diff, który działa na wyjściu ls.
Doceniane są także krótkie i słodkie skrypty.
linux
command-line-interface
filesystems
Willi Ballenthin
źródło
źródło
diff dir1 dir2 | grep "Only"
Grzmotnąć:
Porównaj tylko nazwy plików - nie zawartość plików.
źródło
ls
, użyjfind
zamiast tego!Jak ludzie ci tutaj mówili, możesz używać DIFF w różnych wariantach użytkowania. Lub po prostu użyj
dirdiff
zamiast tego, co jest przeznaczone do tego, czego próbujesz! :-)Ale jeśli chcesz zachować synchronizację niektórych katalogów, naprawdę powinieneś się przyjrzeć
rsync
.pozdrowienia
źródło
Jeśli chcesz to zrobić również we wszystkich podkatalogach, dobrym sposobem na to jest:
Wolę używać skrótu, ale możesz to pominąć, jeśli chcesz.
źródło
for i in $(ls -1 directory1); do if (test -f directory2/$i) then echo $i; fi; done
źródło
To działa..
źródło
niesprawdzone:
źródło
Dennis Williamson miał dobrą odpowiedź , ale musiałem to zrobić rekurencyjnie. GNU findutils 4.7.0 nie sortuje danych wyjściowych, więc oto, czego użyłem
Aby to zrobić tylko w jeden sposób i stworzyć listę plików, użyłem tego:
Aby to działało poprawnie, ani $ dir1, ani $ dir2 nie powinny zawierać ukośnika końcowego.
źródło