Portál AbcLinuxu, 5. května 2025 14: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ř. avi
delete_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_new
grep -v /mnt/jiny/adresar
na souboru delete_duplicates
awk
nebo sed
, ale neznám je. Nebylo by nějaké nakopnutí?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.