Come posso verificare che ogni file nella cartella A esista nella cartella B?


1

Sto riorganizzando alcuni file sul mio hard disk e ho una vecchia copia di una cartella, quello che voglio fare è assicurarmi che ogni file nella cartella A (la vecchia copia) esista nella cartella B. Ogni cartella contiene almeno 200 file, la maggior parte dei quali sono probabilmente duplicati.

Avvertenza: non posso semplicemente controllare i nomi dei file, ma devo anche assicurarmi che abbiano lo stesso contenuto (à la fdupes).

Ho controllato la manpage per vedere fdupesse c'era un modo per fare l'operazione inversa (cioè capire quali file non hanno alcuna copia) ma sono venuto a mani vuote, anche se la funzionalità esistesse ho ancora dei file che esistono solo nella cartella B .

Queste due domande erano simili ma erano solo Windows, quindi non molto di aiuto:

Grazie in anticipo.


Non ho fdupesinstallato. Produce un elenco di file duplicati?
Choroba,

@choroba Sì :)
erb

Risposte:


1

Se hai già un elenco di file duplicati, confrontalo con l'elenco di tutti i file per trovare quelli singoli:

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f)
  • -wmathces solo parole intere (non sottostringhe, quindi il file abcdnon viene abbinato abc)
  • -F considera gli schemi letterali, non espressioni regolari
  • -futilizza il file specificato ( -in questo caso, ovvero l'input standard) come un elenco di espressioni con cui confrontarsi.
  • -v come probabilmente saprai, mostra le linee non corrispondenti.

Questo dovrebbe generare un elenco che contiene i file presenti solo in una delle cartelle, dovrebbe essere facile verificare che siano tutti nella cartella B scremando o facendo il grepping per il nome della cartella A (chiamata sotto dir1) in questo modo:

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f) | grep -F dir1

Ha funzionato a meraviglia, ho dovuto solo aggiungere la -rbandiera fdupes, ha modificato il post in modo che si ricontattasse. Grazie!
Erb,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.