QA
Oprettet søndag 02 august 2020
Q: Bedste program for at finde duplikate file på en eller flere harddiske?
(fra Linux for begyndere, Opslag, permalink)
A(1): (Folmer Fredslund)
"fdupes" All the way!
Det er et fantastisk program på kommandolinjen til at finde duplikater.
Tester rekursivt forskellige måder at se om filerne er forskellige og gør det let at flytte eller slette.
A(2): (Jacob V. Rasmussen)
find . -type f -print0 | xargs -0 md5sum | sort | uniq -w 32 -D
Extra
(David Collin Jørgensen)
"|" tegnet kalder man en pipe, hver gang den fremstår, tager man resultatet fra det før tegnet og sender ind i det efter tegnet.
Du kan så skrive "man" efterfulgt af hver kommando, du vil vide mere om. I dette tilfælde:
find, xargs, sort og uniq
(Jacob V. Rasmussen)
Der er et par små krøller på kommandoerne:
Find . -type f -print0: Find alt i mappen '.' (nuværende mappe) og derunder. Udvælg dem med typen 'fil' (-type f) og udskriv navnet med 0 termineret strenge (-print0).
xargs -0 md5sum: Læs strenge som nul-termineret fra standard input, og kør dem efter md5sum. (md5sum <fil>).
Man burde måske sætte '-n1' eller '-n5' på, for at undgå at kommandoen bliver for lang.
sort: sorter strengene i std-in. Kan køres med forskellige parametre, hvis man fx ønsker numerisk sortering frem for alfabetisk.
uniq -w 32 -D: Søg efter dubletter, og print kun dubletterne. Når der søges, skal der kun tages højde for de første 32 tegn i strengene.
Grunden til at jeg bruger 0-terminerede strenge, er at kommandoen ellers fejler, hvis der er 'mellemrum' i et mappenavn eller filnavn.
Alle kommandoerne kører i en pipeline, hvor stdout fra hver kommando bliver pipet videre til stdin på næste kommando.
Det er en af grundprincipperne i Unix / Linux: Hver kommando har en lille specifik arbejdsopgave, som de udfører. Det gør det nemmere at udvikle og fejlfinde en kommando som fx 'sort', når man meget præcist kan beskrive, hvad den skal gøre.
Hele værktøjssættet bliver til sidst sat sammen som man har brug for, og bliver dermed meget kraftigt.
Har man brug for mere avancerede rutiner, kan sed og awk bruges. Er man endnu mere krævende, kan perl, php, C eller andre programmer / scripts bruges, der gør det man har brug for.
Om ZIM.smarken.net