Mam duży i stale rosnący zestaw plików tekstowych, które są dość małe (mniej niż 100 bajtów). Chcę różnicować każdą możliwą parę plików i notować, które są duplikatami. Mógłbym napisać skrypt Pythona, aby to zrobić, ale zastanawiam się, czy istnieje narzędzie wiersza polecenia systemu Linux (a może prosta kombinacja narzędzi), które by to zrobiło?
Aktualizacja (w odpowiedzi na komentarz mfinni ): Pliki znajdują się w jednym katalogu, więc wszystkie mają różne nazwy plików. (Ale wszystkie mają wspólne rozszerzenie nazwy pliku, co ułatwia wybranie ich wszystkich za pomocą symboli wieloznacznych).
Odpowiedzi:
Są fdupes . Ale zwykle używam kombinacji
find . -type f -exec md5sum '{}' \; | sort | uniq -d -w 36
źródło
find . -name "*.csv" | xargs md5sum | sort | uniq -D -w 34
(Użyłem uniq -D i wolę xargs, aby znaleźć -exec.)xargs
ten sposób nie działa w przypadku nazw plików z odstępami, używanie-exec
jednak działa. Użycie-type f
jako dodatkowego argumentufind
(może być używane razem z-name
) ogranicza wyszukiwanie do plików.Cóż, jest FSlint - którego nie użyłem w tym szczególnym przypadku, ale powinienem być w stanie sobie z tym poradzić: http://en.flossmanuals.net/FSlint/Introduction
źródło
Prawie na pewno nie chcesz różnicować każdej pary plików. Prawdopodobnie będziesz chciał użyć czegoś takiego jak md5sums, aby uzyskać wszystkie sumy kontrolne wszystkich plików i potokować to do innego narzędzia, które będzie raportować tylko duplikaty sum kontrolnych.
źródło