ODPOVĚĎ
Ahoj,
k hledání duplicitních souborů na GNU/Linux přes bash použij fdupes - je standardně v repositářích.
Takto vyhledáš duplicitní soubory v adresáři /home včetně podadresářů :
fdupes -r /homeTakto vyhledáš duplicitní soubory mezi dvěma adresáři /home/user a /mnt/backup včetně podadresářů :
fdupes -r /home/user /mnt/backupS parametrem
d rovnou můžeš duplicitní soubory mazat a parametrem S zobrazíš velikost:fdupes -rdS /homeVýsledek pak je, že se ti to takto zeptá, který soubor zachovat (např. níže bylo nalezeno 199 duplicit):
Set 1 of 199, preserve files [1 - 2, all] (1848059712 bytes each).
(1=zachovat první, 2=zachovat druhý, all=zachovat oba)
To samé s tím, že se tě nebude fdupes ptát zda chceš soubor smazat:
fdupes -rdN /homeDalší možností je nástoj diff, takto porovnáš dva soubory a smažeš duplikát:
diff soubor1 soubor2 && rm soubor2Pokud preferuješ grafické rozhraní, tak použij
fslint.Další alternativy jsou:
rdfind (CLI)
fslint (GUI)
dupeGuru (GUI)
ODPOVĚĎ
Potřeboval jsem pak ještě nějaké ultra rychlé hledání (možných) duplicitních souborů tak, aby se nedělal sum (hash, md5 atd), což strašně trvá. Pro tento účel jsem chtěl hledat jen duplicitní soubory se stejnou velikostí, což je hned. Našel jsem k tomuto tento příkaz a funguje bezvadně = vrátí jen soubory, které mají stejnou velikost:
find /cesta/adresar -type f -printf "%10s\t%p\n" | sort --numeric | uniq --repeated --check-chars=10Případně duplicity dle shodného názvu:
find /cesta/adresar -mindepth 1 -printf '%h %f\n' | sort -t ' ' -k 2,2 | uniq -f 1 --all-repeated=separate | tr ' ' '/'
Komentáře (0)
Přidat komentář