GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:confronta la struttura delle directory senza confrontare i file

Quanto segue (se sostituisci la prima directory con directory1 e la seconda con directory2) dovrebbe fare ciò che stai cercando e rapidamente:

find directory1 -type d -printf "%P\n" | sort > file1
find directory2 -type d -printf "%P\n" | sort | diff - file1

Il principio fondamentale è che stampa tutte le directory, inclusi i percorsi delle sottodirectory relative alle directory di baseN directory.

Questo potrebbe fallire (produrre un output strano) se hai ritorni a capo in alcuni nomi di directory ma non in altri.


vimdiff <(cd dir1; find . | sort) <(cd dir2; find . | sort)

ti darà una bella visualizzazione affiancata delle due gerarchie di directory con tutte le sezioni comuni piegate.


Di solito uso rsync per questa attività:

rsync -nav --delete DIR1/ DIR2

STAI MOLTA ATTENZIONE per usare sempre il -n , noto anche come --dry-run , opzione, oppure sincronizzerà (modifica il contenuto delle) directory.

Questo confronterà i file in base ai tempi e alle dimensioni di modifica dei file... penso questo è quello che vuoi veramente, o almeno non ti dispiace se lo fa? Ho la sensazione che tu voglia solo che accada più velocemente , non che tu ne abbia bisogno per ignorare la differenza tra i contenuti dei file. Se vuoi che non elenchi file diversi con nomi identici, penso che l'aggiunta del --ignore-existing l'opzione lo farà.

Tieni anche presente che non inserire un / alla fine di DIR1 farà confrontare la directory DIR1 con i contenuti di DIR2 .

L'output finisce per essere un po' prolisso, ma ti mostrerà quali file/directory differiscono. File/directory presenti in DIR2 e non in DIR1 sarà preceduto dalla parola deleting .

Per alcune situazioni, la risposta di @slartibartfast potrebbe essere più appropriata, anche se dovrai rimuovere -type d opzione per abilitare l'elenco dei file non di directory. rsync sarà più veloce se hai un numero significativo di file/directory da confrontare.


Linux
  1. Spostare file su Linux senza mv

  2. Come estrarre i file Tar in una directory specifica o diversa in Linux

  3. Rimuovi solo i file nella directory su Linux NOT directory

  4. Conteggio ricorsivo dei file in una directory Linux

  5. Copia la struttura delle cartelle di primo livello senza copiare i file in Linux

Come elencare i file in modo ricorsivo in Linux

Come contare i file nella directory su Linux

Conta il numero di file in una directory in Linux

Spiegazione della struttura della directory di Linux per i principianti

Come contare il numero di file in una directory in Linux

Confronto di due file nel terminale Linux