Como posso verificar se todos os arquivos da pasta A existem na pasta B?

Como posso verificar se todos os arquivos da pasta A existem na pasta B?

Estou reorganizando alguns arquivos no meu disco rígido e tenho uma cópia antiga de uma pasta. O que quero fazer é garantir que todos os arquivos da pasta A (a cópia antiga) existam na pasta B. Cada pasta contém pelo menos 200 arquivos, a maioria dos quais são provavelmente duplicatas.

Advertência: não posso apenas verificar os nomes dos arquivos, também devo garantir que eles tenham o mesmo conteúdo (à la fdupes).

Verifiquei na página de manual fdupesse havia alguma maneira de fazer a operação inversa (ou seja, descobrir quais arquivosnãotenho alguma cópia), mas veio de mãos vazias, mesmo que a funcionalidade existisse, ainda tenho arquivos que existem apenas na pasta B.

Essas duas perguntas eram semelhantes, mas o Windows não ajudava muito:

Desde já, obrigado.

Responder1

Se você já possui uma lista de arquivos duplicados, basta compará-la com a lista de todos os arquivos para encontrar os únicos:

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f)
  • -wapenas palavras inteiras matemáticas (não substrings, então o arquivo abcdnão é correspondido por abc)
  • -Fconsidera os padrões literais, não expressões regulares
  • -fusa o arquivo especificado ( -neste caso, ou seja, entrada padrão) como uma lista de expressões para correspondência.
  • -vcomo você provavelmente sabe, mostra as linhas não correspondentes.

Isso deve gerar uma lista contendo os arquivos encontrados apenas em uma das pastas; deve ser fácil verificar se todos eles estão na pasta B, deslizando ou procurando pelo nome da pasta A (chamada abaixo dir1) assim:

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

informação relacionada