Domanda Eliminazione file duplicati drive

Albe_

Utente Bronze
15 Aprile 2020
88
8
20
31
Salve ragazzi,
come ho scritto nel titolo, mi servirebbe un modo per trovare i file duplicati in una cartella drive ed eliminarli, in maniera automatica perché ho più di 850 file, i file si chiamano con lo stesso nome in quanto li ho caricati più volte per sbaglio, ho file duplicati, alcuni pure triplicati ecc...
Conoscete soluzione per eliminare queste copie?
Grazie, considerando assurdo che un servizio come google drive non abbia una funzione del genere già inserita in quanto permette di carica più file identici per più volte... assurdo

p.s spero sia giusta la sezione...
 
@Albe_ , hai provato a dare un' occhiata a "Clone files checker"? Forse potrebbe fare al caso tuo...o in alternativa dovresti creare uno script che lo fa per te in qualche linguaggio di programmazione.
 
Salve ragazzi,
come ho scritto nel titolo, mi servirebbe un modo per trovare i file duplicati in una cartella drive ed eliminarli, in maniera automatica perché ho più di 850 file, i file si chiamano con lo stesso nome in quanto li ho caricati più volte per sbaglio, ho file duplicati, alcuni pure triplicati ecc...
Conoscete soluzione per eliminare queste copie?
Grazie, considerando assurdo che un servizio come google drive non abbia una funzione del genere già inserita in quanto permette di carica più file identici per più volte... assurdo

p.s spero sia giusta la sezione...
Usa Czkawka.
 
1644333487144.png

i file duplicati hanno lo stesso hash quindi si può creare uno script che cancelli i file con lo stesso hash con un loop, ovviamente deve essere abbastanza intelligente da non eliminarli tutti
 
  • Mi piace
Reazioni: --- Ra ---
Visualizza allegato 59918
i file duplicati hanno lo stesso hash quindi si può creare uno script che cancelli i file con lo stesso hash con un loop, ovviamente deve essere abbastanza intelligente da non eliminarli tutti
Deve essere un programma che verifica una cosiddetta condizione globale (ossia che tutti gli hash siano diversi tra loro) che può essere ridotta a una condizione locale (non esiste un hash che si ripete più di una volta) iterando su una collezione di dati (in questo caso gli hash).
 
Deve essere un programma che verifica una cosiddetta condizione globale (ossia che tutti gli hash siano diversi tra loro) che può essere ridotta a una condizione locale (non esiste un hash che si ripete più di una volta) iterando su una collezione di dati (in questo caso gli hash).
Infatti, deve rimuovere solo i file uguali se esistono
 
Ultima modifica:
Visto che il tuo avatar è un pinguino al computer, do per scontato che stai usando Linux. Supponendo che il la tua cartella si trova in ~/source, questo oneliner dovrebbe copiarti i file in ~/dest senza ricopiare i file duplicati
Bash:
find ~/source/ -type f -print0 | xargs -0 -L1 -P8 sha1sum | awk '{if (cnt[$1] == 0){cnt[$1]++; $1=""; system("cp "pippo($0, 2)" ~/dest/")}}'
Cambia ~/source/ e ~/dest/ con quello che ti pare, ma ricordati il backslash finale. La cartella di destinazione deve esistere. Se sei coraggioso puoi sostituire cp con mv per spostare i files, ma visto che lo script non l'ho testato e non sono nemmeno sicuro che funzioni correttamente... lascia cp e sii cauto, meglio ancora se fai qualche test prima di lanciarlo sulla tua directory da migliaia di files. L'approccio usato è quello dscritto da nfvblog: calcola una checksum sha1, quindi file con nome diverso e contenuto uguale risultano come lo stesso file.

Mi raccomando, testa prima di eseguire. Toh, magari fai così:
Bash:
find ~/source/ -type f -print0 | xargs -0 -L1 -P8 sha1sum | awk '{if (cnt[$1] == 0){cnt[$1]++; $1=""; print "pippo($0, 2)"}}'
e controlla che l'output sia ragionevole. Poi lancia la stessa menata seguita da | wc -l e controlla che il numero di files che andrà a copiare sia ragionevole secondo le tue aspettative. Se qualcun altro del forum lo vuole testare al posto tuo, meglio ancora.


EDIT: Sto avendo qualche problema a postare il codice, il forum mi blocca. Nello script, sostituisci pippo con substr, se lo faccio io il forum non mi lascia postare.
 
  • Mi piace
Reazioni: nfvblog e 0xbro
Colgo l'occasione del post per chiedervi un aiuto simile. Ho perso ancora molto tempo fa i dati su un hdd (principalmente foto e video), che sono riuscito a recuperare in buona percentuale. Il problema è che il programma usato all'epoca, recuva o simili, mi ha creato una miriade di sottodirectory che spesso contengono centinaia di foto uguali tra le varie directory. Per esempio, stesse foto di un viaggio sono presenti sia nella directory PIPPO che in quella BAUDO, però con nome diverso (11235.jpg, 1283784.jpg).

Cercavo un modo automatico per eliminarle, immaginavo un programmino che riconosce i duplicati in base all'immagine in sè... non saprei.
 
Per esempio, stesse foto di un viaggio sono presenti sia nella directory PIPPO che in quella BAUDO, però con nome diverso (11235.jpg, 1283784.jpg).

Cercavo un modo automatico per eliminarle, immaginavo un programmino che riconosce i duplicati in base all'immagine in sè... non saprei.
Lo script che ho scritto nel post precedente dovrebbe andare... a seconda delle tue esigenze puoi cambiare cp con mv oppure puoi metterci un else e fare direttamente rm. Se sei su windows lo puoi usare sotto Windows Subsystem for Linux che, da quel che ricordo, si abilita dal pannello di controllo. L'unica cosa è che i file devono essere veramente uguali tra loro: se una è un'immagine e l'altra è la stessa immagine ma leggermente corrotta, viene identificata come immagine diversa.
 
  • Mi piace
Reazioni: 0xbro