Czy na moim dysku można znaleźć duplikaty plików, które są identyczne bit po bicie, ale mają różne nazwy plików?
files
duplicate-files
student
źródło
źródło
st_size
s, eliminując te, które mają tylko jedno takie same, a następnie obliczając tylko sumy md5 dla pasującychst_size
s.Odpowiedzi:
fdupes
mogę to zrobić. Odman fdupes
:W Debianie lub Ubuntu możesz go zainstalować przy pomocy
apt-get install fdupes
. W Fedorze / Red Hat / CentOS możesz go zainstalować za pomocąyum install fdupes
. Na Arch Linux można użyćpacman -S fdupes
, a na Gentooemerge fdupes
.Aby uruchomić czek malejący z katalogu głównego systemu plików, co prawdopodobnie zajmie dużo czasu i pamięci, użyj czegoś takiego
fdupes -r /
.Jak podano w komentarzach, możesz uzyskać największe duplikaty, wykonując następujące czynności:
To się zepsuje, jeśli twoje nazwy plików zawierają nowe linie.
źródło
fdupes ....... | xargs ls -alhd | egrep 'M |G '
aby zachować pliki w formacie czytelnym dla ludzi i tylko te o rozmiarze w megabajtach lub gigabajtach. Zmień polecenie, aby odpowiadało rzeczywistym wynikom.du
potok dosort
powie ci.Kolejnym dobrym narzędziem jest
fslint
:W systemach opartych na Debianie możesz zainstalować go z:
Możesz to zrobić ręcznie, jeśli nie chcesz lub nie możesz zainstalować narzędzi innych firm. Większość takich programów działa poprzez obliczanie sum kontrolnych plików . Pliki z tym samym md5sum prawie na pewno zawierają dokładnie te same dane. Więc możesz zrobić coś takiego:
Przykładowe dane wyjściowe (nazwy plików w tym przykładzie są takie same, ale zadziała również, gdy będą różne):
Będzie to znacznie wolniejsze niż wspomniane już dedykowane narzędzia, ale zadziała.
źródło
st_size
, eliminując te, które mają tylko jeden plik o tym rozmiarze, a następnie obliczając sumy md5 tylko między plikami o tym samym rozmiarzest_size
.Krótka odpowiedź: tak.
Dłuższa wersja: spójrz na wpis w Wikipedii fdupes , zawiera całkiem niezłą listę gotowych rozwiązań. Oczywiście można napisać własną rękę, nie jest to , że trudno - programy mieszaja jak
diff
,sha*sum
,find
,sort
iuniq
powinno załatwić sprawę. Możesz nawet umieścić go w jednym wierszu i nadal będzie to zrozumiałe.źródło
Jeśli uważasz, że funkcja skrótu (tutaj MD5) jest wolna od kolizji w Twojej domenie:
Chcesz pogrupować identyczne nazwy plików? Napisz prosty skrypt,
not_uniq.sh
aby sformatować dane wyjściowe:Następnie zmień
find
polecenie, aby użyć skryptu:To jest podstawowy pomysł. Prawdopodobnie powinieneś zmienić,
find
jeśli twoje nazwy plików zawierają niektóre znaki. (np. spacja)źródło
Pomyślałem, aby dodać niedawno ulepszony rozwidlenie fdupes, jdupes , które zapowiadają się szybciej i będą bardziej bogate w funkcje niż fdupes (np. Filtr rozmiaru):
Spowoduje to rekurencyjne odnalezienie zduplikowanych plików większych niż 50 MB w bieżącym katalogu i wygenerowanie listy wyników w myjdups.txt.
Uwaga: dane wyjściowe nie są sortowane według rozmiaru, a ponieważ wydaje się, że nie są wbudowane, dostosowałem odpowiedź @Chris_Down powyżej, aby to osiągnąć:
źródło
Wikipedia miała artykuł ( http://en.wikipedia.org/wiki/List_of_duplicate_file_finders ) z listą dostępnego oprogramowania typu open source do tego zadania, ale teraz zostało usunięte .
Dodam, że wersja fslint w GUI jest bardzo interesująca, pozwalając na użycie maski do wyboru plików do usunięcia. Bardzo przydatne do czyszczenia zduplikowanych zdjęć.
W systemie Linux możesz użyć:
2 ostatnie prace na wielu systemach (Windows, Mac i Linux) Nie sprawdziłem FSLint
źródło
Oto moje zdanie na ten temat:
Różni się tym, że zawiera tylko pierwsze 1 MB pliku.
Ma to kilka problemów / funkcji:
Używam go do porównywania klipów wideo, więc to mi wystarcza.
źródło