Ik probeer de bestanden te vinden die in de ene directory bestaan maar niet in de andere, ik probeerde dit commando te gebruiken:
diff -q dir1 dir2
Het probleem met het bovenstaande commando is dat het zowel de bestanden in dir1
maar niet in dir2
vindt als de bestanden in dir2
maar niet in dir1
,
Ik probeer alleen de bestanden in dir1
te vinden maar niet in dir2
.
Hier's een klein voorbeeld van hoe mijn gegevens eruit zien
dir1 dir2 dir3
1.txt 1.txt 1.txt
2.txt 3.txt 3.txt
5.txt 4.txt 5.txt
6.txt 7.txt 8.txt
Een andere vraag die mij bezighoudt is hoe ik de bestanden in dir1
kan vinden maar niet in dir2
of dir3
in een enkel commando?
diff -r dir1 dir2 | grep dir1 | awk '{print $4}' > difference1.txt
Uitleg:
diff -r dir1 dir2
laat zien welke bestanden alleen in dir1 staan en welke alleen in dir2 en ook de eventuele wijzigingen van de bestanden die in beide directories staan.
diff -r dir1 dir2 | grep dir1
laat zien welke bestanden alleen in dir1 staan
awk
om alleen de bestandsnaam af te drukken.
vim's DirDiff plugin is een ander zeer nuttig gereedschap om mappen te vergelijken.
vim -c "DirDiff dir1 dir2"
Het geeft niet alleen een lijst van bestanden die verschillen tussen de directories, maar laat je ook toe om met vimdiff de bestanden die verschillend zijn te inspecteren/wijzigen.