Jeg prøver å finne filene som finnes i den ene katalogen, men ikke i den andre, jeg prøvde å bruke denne kommandoen:
diff -q dir1 dir2
Problemet med kommandoen ovenfor at den finner både filene i dir1
, men ikke i dir2
, samt filene i dir2
, men ikke i dir1
,
Jeg prøver bare å finne filene i dir1
, men ikke i dir2
.
Her er et lite eksempel på hvordan dataene mine ser ut
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
Et annet spørsmål jeg lurer på er hvordan jeg kan finne filene i dir1
, men ikke i dir2
eller dir3
i en enkelt kommando?
diff -r dir1 dir2 | grep dir1 | awk '{print $4}' > difference1.txt
Forklaring:
diff -r dir1 dir2
viser hvilke filer som bare finnes i dir1 og hvilke som bare finnes i dir2, samt eventuelle endringer i filene som finnes i begge katalogene.
diff -r dir1 dir2 | grep dir1
viser hvilke filer som bare finnes i dir1.
awk
for å skrive ut bare filnavn.
vim's DirDiff plugin er et annet veldig nyttig verktøy for å sammenligne kataloger.
vim -c "DirDiff dir1 dir2"
Det viser ikke bare hvilke filer som er forskjellige mellom katalogene, men lar deg også inspisere / endre med vimdiff filene som er forskjellige.