Sto cercando di trovare i file esistenti in una directory ma non nell'altra, ho provato ad usare questo comando:
diff -q dir1 dir2
Il problema con il comando di cui sopra è che trova sia i file in dir1
ma non in dir2
sia i file in dir2
ma non in dir1
,
Sto cercando di trovare i file in dir1
ma non in dir2
solo.
Ecco un piccolo esempio di come appaiono i miei dati
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
Un'altra domanda che ho in mente è come posso trovare i file in dir1
ma non in dir2
o dir3
in un singolo comando?
diff -r dir1 dir2 | grep dir1 | awk '{print $4}' > difference1.txt
Spiegazione:
diff -r dir1 dir2
mostra quali file sono solo in dir1 e quelli solo in dir2 e anche le eventuali modifiche dei file presenti in entrambe le directory.
diff -r dir1 dir2 | grep dir1
mostra quali file sono solo in dir1
awk
per stampare solo il nome del file.
comm -23 <(ls dir1 |sort) <(ls dir2|sort)
Questo comando vi darà i file che sono in dir1 e non in dir2.
Per quanto riguarda il segno <( )
, puoi cercarlo su Google come 'sostituzione di processo'.
Il plugin DirDiff di vim è un altro strumento molto utile per confrontare le directory.
vim -c "DirDiff dir1 dir2"
Non solo elenca quali file sono diversi tra le directory, ma permette anche di ispezionare/modificare con vimdiff i file che sono diversi.