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

1

Estou reorganizando alguns arquivos no meu disco rígido e tenho uma cópia antiga de uma pasta, o que eu 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 provavelmente são duplicados.

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

Eu verifiquei a página de manual para fdupes se houvesse alguma maneira de fazer a operação inversa (ou seja, descobrir quais arquivos não têm alguma cópia), mas surgiram de mãos vazias, mesmo se o funcionalidade existiria Ainda tenho arquivos que existem apenas na pasta B.

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

  • Como posso encontrar todas as pastas na pasta A que não existem na pasta B?
  • Excluir arquivos de uma pasta se um arquivo com nome semelhante não existir em outra pasta

Obrigado antecipadamente.

    
por erb 03.12.2015 / 12:30

1 resposta

1

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

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f)
  • -w contém apenas palavras inteiras (não substrings, portanto, o arquivo abcd não é correspondido por abc )
  • -F considera os padrões como literais, não expressões regulares
  • -f usa o arquivo especificado ( - neste caso, ou seja, entrada padrão) como uma lista de expressões para correspondência.
  • -v , como você provavelmente sabe, mostra as linhas não correspondentes.

Isso deve mostrar uma lista contendo os arquivos encontrados somente em uma das pastas, deve ser fácil verificar se eles estão todos na pasta B, skimming ou grepping para o nome da pasta A (abaixo chamada dir1 ) como isso:

fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f) | grep -F dir1
    
por 03.12.2015 / 13:01