Supportvragen Mac > macOS (en OS X) en software daarvoor

Dubbele bestanden verwijderen

(1/4) > >>

WimvanD:
Na jaren bestanden/foto's/muziek etc opslaan is mijn externe hdd (Lacie 2 big dock) een zootje geworden.
Copie van een copie in een map naar andere map ...

Welke is de beste manier om dubbele bestanden op te zoeken en te verwijderen.
Iets standaard via Finder ?
Nieuwe slimme map maken heb ik al gevonden maar dan nog moet je alles manueel aflopen.
Of met extra non-Apple programma ?

orange:
Aanbevelingen van MacWorld:

https://www.macworld.com/article/673151/how-to-find-delete-duplicate-files-on-mac.html

Flix:
Dan vraag ik me altijd weer af: hoe weet de software dat het daadwerkelijk dubbele bestanden zijn?
Ik heb het idee dat zoiets toch wel mensenwerk blijft, zelfs met AI...

orange:
Naam, extensies en bitjes vergelijken?

Als iets dezelfde naam heeft, maar het één is een PDF en het ander een ISO, dan wordt het uiteraard niet als dubbel bestand aangemerkt.

Als iets exact hetzelfde is, maar wel een andere naam heeft ook niet.

Verder is niet elk dubbel bestand ongewenst. Ik heb werkmappen van jaren waar in veel mappen hetzelfde bestand te vinden zal zijn. Dat zou ik toch wel graag zo houden.

Dus inderdaad... het is en blijft altijd mensenwerk als je niet alsnog een zooitje van je harddisk wilt maken.

doctor_apple:
@Orange:

Dat doen we door een techniek genaamd "hashing". We kijken naar de inhoud van het bestand om daar vervolgens een digitale vingerafdruk van te maken.

Voorbeeld: ik heb een textbestand

-rw-r--r-- 1 docapple users   54 Feb  2 14:54 Testbestand.txt

Met de inhoud:

Dit is een testbestand om iets kleins te demonstreren

er zijn tools voor om een "afdruk" te maken ... Bijvoorbeeld shasum ...

Doen we dat op een *nix systeem (shasum bestandsnaam), dan krijg ik:

8814377921f52d4e94637ff50d1de3d788d3d1ad  Testbestand.txt

Hernoem ik het bestand en verander ik de aanmaaktijd en datum, en voer ik het commando nogmaals uit, dan krijg ik als antwoord:

8814377921f52d4e94637ff50d1de3d788d3d1ad  T2.txt

Identieke "afdruk" zoals je ziet ...

Verander ik "Dit" in "Dat" dan krijg ik een andere waarde:

ef919d512d97aff7c1b9609f747ef7cf7585dea5  T2.txt

Welnu, als je dit mechanisme toepast, tesamen met het kijken naar: aanmaakdatum, wijzigingsdatum, bestandsgrootte en nog een paar zaken, dan kun je daar met een grote trefzekerheid vaststellen of iets aan elkaar gelijk is of niet.

Op het linux/unix platform bestaan daar al decennia lang tools voor, welke vaak net zo eenvoudig zijn als het intypen van een eenvoudige opdrachtregel op de terminal. Voorbeeld van een dergelijke (razendsnelle) tool is: fdupes.

Dit (terminal) programma is gratis te downloaden en werkt op de prompt

Als ik het hierboven gebruikte testbestand kopieer in een map met daarin nog een map en weer een kopie en voer het programma uit, dan ziet dat er als volgt uit:

fdupes -r .
./T2.txt
./Testbestand.txt
./Nepbestand.txt
./MacFreak/T2.txt

Oftewel, het programma vindt dat de volgende bestanden dubbel zijn (al hebben ze andere namen)

Wil je bij elk gevonden bestand een terugkoppeling krijgen welke te behouden geef je in:

fdupes -rd .
[1] ./T2.txt
[2] ./Testbestand.txt
[3] ./Nepbestand.txt
[4] ./MacFreak/T2.txt

Set 1 of 1, preserve files [1 - 4, all, quit]:

Wat ik meestal doe (bij media bestanden) voordat ik deze verder verwerk, is alles in een centrale map dumpen. Dus een grote map met soms wel paar honderd gigabyte aan video's, foto's en muziek ... Bestandsnamen zijn dan (voor mij) even niet relevant.

Vervolgens schoon ik de map op door alle duplicaten eruit te halen en automatisch te verwijderen. Na inmiddels denk wel enkele tientallen zo niet een honderdtal aan terabytes op die manier te hebben verwerkt, heb ik er het nodige vertrouwen in dat dit werkt 🤣 ...

Dus, dan start ik de terminal op in de betreffende map en type ik:

fdupes -rdN .

LET OP, niet zomaar ingeven ...

Wat dit doet is: check op duplicaten, ook in submappen en verwijder duplicaten en laat van elk gevonden duplicaat 1 bestand staan ...

Werkt als een trein. Dan haal ik de bestanden door exiftool om ze te soorteren naar type (video, foto, plaatje) aan de hand van hun inhoud en krijg dan een mappenstructuur als:

exiftool -progress -r $2 '-Directory<FileTypeExtension'

TXT, DOC, MP4, M4A, MP3, RAW, JPG, PDF

In de mappen zitten dan ook de desbetreffende bestanden. En dat is de een na laatste stap ... Vervolgens kan ik de bestanden slepen naar bestemming of naar de betreffende librarian (bibliotheek-software), zij het Apple Music, MusicBee (Windows), Photos of gewoon, met de hand ...

Natuurlijk is verdere verwerking mogelijk, zelfs geautomatiseerd inzake bestandsnaamgeving. Maar dat is voor gevorderden 😉 ...

Hoe dan ook, eigenlijk komt het neer op:

1. Bestanden die je wilt schonen in een map plaatsen (inclusief submappen)
2. fdupes -r . > "rapport.txt"
opgeven als je een textbestand wilt hebben met alle dubbele bestanden
2. fdupes -rd .
als je een prompt wilt krijgen om te kiezen tussen welk bestand je wilt behouden OF
2. fdupes -rdN .
als je fdupes altijd 1 kopie wilt laten behouden
3. exiftool -progress -r $2 '-Directory<FileTypeExtension'
om vervolgens alles in mapjes te stoppen
4. find . -type d -empty -delete
om lege mapjes te wissen.

Let op, bovenstaande is enkel ter illustratie ... Gebruik op eigen risico, en enkel na begrip van de tools  :music: ... Allemaal standaard *nix tools, die ook (gratis) voor Apple macOS beschikbaar zijn.

Ik heb volgens mij ergens een relatief eenvoudig scriptje geschreven om mappen met Foto's en Video's op te schonen, maar kan me even niet meer herinneren waar ik dat heb staan.

Voor FDUPES is een alternatief via een lange opdrachten regel op macOS. Helaas is de unix-laag van macOS nogal uitgekleed en niet voorzien van al de handigheidjes die onder Linux te vinden zijn, maar het goede eraan is natuurlijk dat het wel heel gemakkelijk geinstalleerd kan worden en in de kern het hier wel degelijk een unix-variant betreft.

Zo, dat was de late middag-koffie-pauze, nu afsluiten en klaar maken voor een wat langere reis ...

Navigatie

[0] Berichtenindex

[#] Volgende pagina

Naar de volledige versie