-
Data: 2012-02-13 14:00:32
Temat: Re: zadanie
Od: "slawek" <h...@s...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Użytkownik napisał w wiadomości grup
dyskusyjnych:jh6dp3$km6$...@i...gazeta.pl...
>ktos umialby napisac prostego toola, program
>ktory dla podanego katalogu i podanego rozszerzenia plikow
>wyszukalby pliki ktore maja binarne duplikaty i duplikaty
>te przerenamowal np na koncu dodajac ciag np ".duplicate"
Swego czasu był opublikowany program (tekst źródłowy w C, okienka MS w
czystym API) o dźwięcznej nazwie "dupless".
Algorytm był do wyboru: albo porównywanie nazw plików, albo długości (i ew.
zawartości, daty). Program był "prościutki", ale nie pozwalał sam w sobie na
masowe rename czy delete itp. - choć można wyeksportować listę duplikatów. Z
lenistwa polecam gawk do przetworzenia takiej listy - i sprawa rozwiązana.
W sensie teoretycznym: co oznacza, że dwa pliki są jednakowe? Mają taką samą
zawartość? Ale muszą mieć różne nazwy (tzn. przynajmniej inna ścieżka)...
inaczej nie mówilibyśmy o dwóch plikach. Ale pliki o tej samej zawartości
mogą mieć znaczenie (dla systemu, dla kogoś), np. ktoś może wstawiać do
katalogów plik "audit_ok.txt" o długości zero bajtów... Z drugiej strony dwa
pliki, np. file1.c i file2.c mogą mieć różną zawartość w sensie np. CRLF vs.
LF - ale i tak będzie to "ten sam" kod źródłowy (czyli co? różne czy takie
same?)
W sensie praktycznym - wystarczy sprawdzać długość pliku (pliki o różnych
długościach są różne, te mające 0 bajtów są wszystkie jednakowe), potem
jeżeli długości są takie same to sprawdzać pierwsze n bajtów (tanie, nie
zajmuje wiele czasu), potem liczyć sumę kontrolną (CRC, MD5 do wyboru, pliki
z różnym MD5 są różne i rzadko kiedy, bardzo rzadko, będzie potrzebne
dokładniejsze sprawdzenie, a MD5 ma koszt liniowy)... jeżeli to zawiedzie
sprawdzać bajt po bajcie zgodność (przy m bajtach i k plikach koszt m*k,
ewentualnie można od końca czy jakoś losowo).
slawek
Następne wpisy z tego wątku
- 13.02.12 17:29 Michoo
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-03-05 Zielona Góra => Senior Field Sales (system ERP) <=
- 2025-03-05 Warszawa => Data Engineer (Tech Lead) <=
- 2025-03-05 Kraków => Business Development Manager - Network and Network Security
- 2025-03-05 Zaniepokojeni mieszkańcy
- 2025-03-05 Ile pieniędzy ma bank?
- 2025-03-05 Ostrów Świętokrzy => Node.js / Fullstack Developer <=
- 2025-03-05 Białystok => Architekt rozwiązań (doświadczenie w obszarze Java, A
- 2025-03-05 Warszawa => Frontend Developer (Angular13+) <=
- 2025-03-05 Warszawa => Frontend Developer (obszar Angular13+) <=
- 2025-03-05 Chiny-Kraków => Backend Developer (Node + Java) <=
- 2025-03-05 Warszawa => JavaScript / Node / Fullstack Developer <=
- 2025-03-05 China-Kraków => Key Account Manager IT <=
- 2025-03-05 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-05 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-03-05 Ostrów Wielkopolski => Konsultant Wdrożeniowy Comarch XL/Optima (Ksi