Portál AbcLinuxu, 26. října 2025 00:58
find -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 33 | cut -c 35-
případně programy fdupes a fslint. Což není, co bych si představoval. Hledám program, který by na jméno souboru odpověděl jestli je sám nebo má duplikáty podobně efektivním způsobem jako je hledání locate. Představoval bych si to podobně jako locate ve dvou částech. první pravidelný univerzální běh spočte hash a vytvoří DB s primárním klíčem hash a value bude seznam souborů, které tento hash mají. Pak by se dalo rozumně rychle dotazovat jednak na duplikát k souboru a také na to jaké máme soubory s duplicitou 2, 3 atd.
Řešení dotazu:
fdupes, pak mi došlo, že tak jako updatedb se to prostě dělat nedá. Protože při hledání duplicit musí se přečíst celý obsah disků, nejen adresářová struktura, což jsou u mne terabyty. Zatím fdupes běží 10 hodin a ještě není ve 1/4.
fdupes -r dir1 dir2 .... Probírám jen to co je namountováno v /mnt a /windows ani /home neprojíždím, protože to mám na SSD a tam ty duplikáty jsou pro rychlou práci.
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/standa/PC090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/S3/PC090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_1_/1209-1846-St090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_2_/1209-1846-St090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/standa/PC090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/S3/PC090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_1_/1209-1845-St090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_2_/1209-1845-St090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/standa/PC090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/S3/PC090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_1_/1209-1846-St090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_2_/1209-1846-St090085.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/standa/PC090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/S3/PC090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_1_/1209-1845-St090084.JPG /windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_2_/1209-1845-St090084.JPG /windows/zaloha_2/Filmy/foto_zazalohovat/backup_/cfc-0012/dcim/165canon/mvi_6541.avi /windows/zaloha_2/Filmy/video/Radek/nezpracovano/CFC-0012/DCIM/165CANON/MVI_6541.AVI /mnt/crypted1/Foto/zpracovano/foto_zazalohovat/backup_/cfc-0012/dcim/165canon/mvi_6541.avi /mnt/afx/obrazky/Photo_original/2006/norsko/avi/norsko-20111207_4403_1.avi /mnt/basic/public/obrazky/obrazky/Photo_original/2006/norsko/avi/norsko-20111207_4403_1.avi /windows/zaloha_2/foto_zazalohovat/backup_/cfc-0012/dcim/165canon/mvi_6541.aviTedy sada řádků s plnými názvy souborů, a každou skupinu stejných souborů odděluje jeden prázdný řádek. Soubor duplikátů je obrovský, takže ruční práce není možná. A pokouším se načíst, jak bych mohl dát dohromady script s následující funkcionalitou:
/mnt/afx/obrazky/Photo_original a extenzi např. avidelete_duplicates.duplicates_new, který by obsahoval původní soubor duplikátů s vyřazením těch bloků, které byly zpracovávány, dostal bych iterativní krok, který mi vytvoří přikaz, který převede situaci s nalezenými duplikáty ve stavu duplicates do stavu duplicates_newgrep -v /mnt/jiny/adresar na souboru delete_duplicatesawk nebo sed, ale neznám je. Nebylo by nějaké nakopnutí?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.