Fórum Root.cz
Hlavní témata => Software => Téma založeno: Ħαℓ₸℮ℵ ␏⫢ ⦚ 06. 03. 2024, 10:06:10
-
Jde u příkazu find při použití víc starging pointů (ano, man jsem četl, uniq obsahuje jen jednou v jiné souvislosti) nastavit, aby to každý soubor vypisovalo jen jednou?
(neopravitelná) Příčina je, že jednotlivé starting pointy nejsou disjunktní kvůli symlinku a nebo kvůli tomu, že jeden z nich je nadřazený adresář, ale s by se mi blbě něco dělalo ,nějak testovat mezi sebou n*(n-1), jestli vůči sobě nejsou ve vztahu , to by to zkomplikovalo
Něco jako -samefile vůči všem výsledkům
V omezených případech a spíš jen jako nástřel to jde řešit přes find ... | sed "s/..\//g |sort | uniq" a to jen pro symlinky
Nebo existuje nějaký příkaz funiq ?
-
Z dotazu není úplně zřejmé co má být výsledkem a zda se mají porovnávat jen názvy souborů nebo i obsah, ale pro tahle různá porovnávání dvou adresářů a hledání duplicit nebo unikátních používám tyhle metody, třeba tě něco nasměruje.
1) find, sed, uniq, sort
Spíš pro jednoduchý a rychlý věci, ale už jsi zkoušel a moc ti nepomohlo.
2) fdupes nebo jdupes
Umí hledat duplicitní soubory na základě obsahu. jdupes je fork fdupes a umí toho víc, vč. třeba i výstupu jen unikátních souborů
3) rsync -av --dry-run --delete dir1/ dir2/
Ukáže jaké soubory se přepíšou, protože jsou jiný a jaké to smaže, protože v dir1/ nejsou a v dir2/ jsou.